diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index 128300aa..f25074c6 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -40,7 +40,7 @@ jobs: os: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@v3 - + - name: Install Rust uses: actions-rust-lang/setup-rust-toolchain@v1 with: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 1d2681a0..8d785306 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -25,9 +25,9 @@ jobs: uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: nightly-2023-07-21 - + - name: Install cargo-nextest run: cargo install cargo-nextest - + - name: Run tests run: cargo nextest run diff --git a/Makefile b/Makefile index 1a0ad053..51efd64e 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # Build the system contracts build-contracts: - cd etc/system-contracts && yarn; yarn install; yarn build; yarn preprocess; yarn build-bootloader + cd etc/system-contracts && yarn; yarn install; yarn build ./scripts/refresh_contracts.sh # Clean the system contracts @@ -10,7 +10,7 @@ clean-contracts: # Rebuild the system contracts rebuild-contracts: - cd etc/system-contracts && yarn build; yarn preprocess; yarn build-bootloader + cd etc/system-contracts && yarn build ./scripts/refresh_contracts.sh ./scripts/refresh_test_contracts.sh diff --git a/e2e-tests/test/hardhat-apis.test.ts b/e2e-tests/test/hardhat-apis.test.ts index b39d635a..760d4e17 100644 --- a/e2e-tests/test/hardhat-apis.test.ts +++ b/e2e-tests/test/hardhat-apis.test.ts @@ -64,8 +64,7 @@ describe("hardhat_mine", function () { }); }); -// TODO: Run this test once eth_sendTransaction has been implemented or when different tests have been added -xdescribe("hardhat_impersonateAccount & hardhat_stopImpersonatingAccount", function () { +describe("hardhat_impersonateAccount & hardhat_stopImpersonatingAccount", function () { it("Should allow transfers of funds without knowing the Private Key", async function () { // Arrange const userWallet = Wallet.createRandom().connect(provider); @@ -84,8 +83,9 @@ xdescribe("hardhat_impersonateAccount & hardhat_stopImpersonatingAccount", funct await recieptTx.wait(); // Assert - expect(await userWallet.getBalance()).to.equal(ethers.utils.parseEther("0.42")); - expect(await provider.getBalance(RichAccounts[0].Account)).to.equal(beforeBalance.sub(0.42)); + expect((await userWallet.getBalance()).eq(ethers.utils.parseEther("0.42"))).to.true; + expect((await provider.getBalance(RichAccounts[0].Account)).eq(beforeBalance.sub(ethers.utils.parseEther("0.42")))) + .to.true; }); }); diff --git a/e2e-tests/test/main.test.ts b/e2e-tests/test/main.test.ts index 0aaf0a12..a5739dad 100644 --- a/e2e-tests/test/main.test.ts +++ b/e2e-tests/test/main.test.ts @@ -62,7 +62,7 @@ describe("Greeter Smart Contract", function () { // Validate log is created expect(receipt.logs.length).to.greaterThanOrEqual(1); - const setGreetingLog = receipt.logs[1]; + const setGreetingLog = receipt.logs[0]; expect(setGreetingLog.address).to.equal(greeter.address); const eventInterface = new ethers.utils.Interface(["event LogString(string value)"]); @@ -79,7 +79,7 @@ describe("Greeter Smart Contract", function () { let receipt: TransactionReceipt = await setGreetingTx.wait(); // Create filter - const topic = receipt.logs[1].topics[0]; + const topic = receipt.logs[0].topics[0]; const filterId = await provider.send("eth_newFilter", [ { fromBlock: "earliest", diff --git a/e2e-tests/test/zks-apis.test.ts b/e2e-tests/test/zks-apis.test.ts index 01cd989e..a27e04dd 100644 --- a/e2e-tests/test/zks-apis.test.ts +++ b/e2e-tests/test/zks-apis.test.ts @@ -31,7 +31,7 @@ describe("zks_estimateFee", function () { const response: Fee = await provider.send("zks_estimateFee", [transaction]); // Assert - expect(ethers.BigNumber.from(response.gas_limit)).to.eql(ethers.BigNumber.from("1230957"), "Unexpected gas_limit"); + expect(ethers.BigNumber.from(response.gas_limit)).to.eql(ethers.BigNumber.from("621166"), "Unexpected gas_limit"); expect(ethers.BigNumber.from(response.gas_per_pubdata_limit)).to.eql( ethers.BigNumber.from("4080"), "Unexpected gas_per_pubdata_limit" diff --git a/etc/system-contracts/SystemConfig.json b/etc/system-contracts/SystemConfig.json index 5ac25bb6..827e11b5 100644 --- a/etc/system-contracts/SystemConfig.json +++ b/etc/system-contracts/SystemConfig.json @@ -9,7 +9,7 @@ "L1_TX_INTRINSIC_L2_GAS": 167157, "L1_TX_INTRINSIC_PUBDATA": 88, "MAX_GAS_PER_TRANSACTION": 80000000, - "BOOTLOADER_MEMORY_FOR_TXS": 485225, + "BOOTLOADER_MEMORY_FOR_TXS": 8740224, "REFUND_GAS": 7343, "KECCAK_ROUND_COST_GAS": 40, "SHA256_ROUND_COST_GAS": 7, diff --git a/etc/system-contracts/VERSION.md b/etc/system-contracts/VERSION.md new file mode 100644 index 00000000..675b64d7 --- /dev/null +++ b/etc/system-contracts/VERSION.md @@ -0,0 +1,25 @@ +This directory was copied from https://github.com/matter-labs/era-system-contracts. + +The current commit: `a00ab9a11643f3a918ed95cdf8a04edff5499d92`. + +The following directories/files were copied: +- [bootloader](bootloader) +- [contracts](contracts) +- [scripts](scripts) +- [hardhat.config.ts](hardhat.config.ts) +- [package.json](package.json) +- [SystemConfig.json](SystemConfig.json) +- [yarn.lock](yarn.lock) + +The next changes were introduced: +- [bootloader.yul](bootloader/bootloader.yul) + - Debug data, marked as `DEBUG SUPPORT` blocks. + - Impersonating preprocessing mode, blocks `` and at some places added `` condition. +- [process.ts](scripts/process.ts) + - Impersonating preprocessing mode, "For impersonating" blocks. +- [DefaultAccount.sol](contracts/DefaultAccount.sol) + - Return transaction data (empty), marked as `FOUNDRY SUPPORT` blocks. +- [DefaultAccountNoSecurity.sol](contracts/DefaultAccountNoSecurity.sol) + - NEW smart contract, only for Hardhat/Forge testing. +- [IAccount.sol](contracts/interfaces/IAccount.sol) + - Return transaction data (empty), marked as `FOUNDRY SUPPORT` blocks. diff --git a/etc/system-contracts/bootloader/bootloader.yul b/etc/system-contracts/bootloader/bootloader.yul index c0c946b8..dd115490 100644 --- a/etc/system-contracts/bootloader/bootloader.yul +++ b/etc/system-contracts/bootloader/bootloader.yul @@ -3,81 +3,20 @@ object "Bootloader" { } object "Bootloader_deployed" { code { - /// @notice the address that will be the beneficiary of all the fees - let OPERATOR_ADDRESS := mload(0) - - let GAS_PRICE_PER_PUBDATA := 0 - - // Initializing batch params - { - /// @notice The hash of the previous batch - let PREV_BATCH_HASH := mload(32) - /// @notice The timestamp of the batch being processed - let NEW_BATCH_TIMESTAMP := mload(64) - /// @notice The number of the new batch being processed. - /// While this number is deterministic for each batch, we - /// still provide it here to ensure consistency between the state - /// of the VM and the state of the operator. - let NEW_BATCH_NUMBER := mload(96) - - /// @notice The gas price on L1 for ETH. In the future, a trustless value will be enforced. - /// For now, this value is trusted to be fairly provided by the operator. - let L1_GAS_PRICE := mload(128) - - /// @notice The minimal gas price that the operator agrees upon. - /// In the future, it will have an EIP1559-like lower bound. - let FAIR_L2_GAS_PRICE := mload(160) - - /// @notice The expected base fee by the operator. - /// Just like the batch number, while calculated on the bootloader side, - /// the operator still provides it to make sure that its data is in sync. - let EXPECTED_BASE_FEE := mload(192) - - validateOperatorProvidedPrices(L1_GAS_PRICE, FAIR_L2_GAS_PRICE) - - // This implementation of the bootloader relies on the correct version of the SystemContext - // and it can not be upgraded via a standard upgrade transaction, but needs to ensure - // correctness itself before any transaction is executed. - upgradeSystemContextIfNeeded() - - let baseFee := 0 - - - - // Only for the proved batch we enforce that the baseFee proposed - // by the operator is equal to the expected one. For the playground batch, we allow - // the operator to provide any baseFee the operator wants. - baseFee, GAS_PRICE_PER_PUBDATA := getBaseFee(L1_GAS_PRICE, FAIR_L2_GAS_PRICE) - if iszero(eq(baseFee, EXPECTED_BASE_FEE)) { - debugLog("baseFee", baseFee) - debugLog("EXPECTED_BASE_FEE", EXPECTED_BASE_FEE) - assertionError("baseFee inconsistent") - } - - setNewBatch(PREV_BATCH_HASH, NEW_BATCH_TIMESTAMP, NEW_BATCH_NUMBER, EXPECTED_BASE_FEE) - - + {{CODE_START_PLACEHOLDER}} - - - baseFee, GAS_PRICE_PER_PUBDATA := getBaseFee(L1_GAS_PRICE, FAIR_L2_GAS_PRICE) - - let SHOULD_SET_NEW_BATCH := mload(224) - - switch SHOULD_SET_NEW_BATCH - case 0 { - unsafeOverrideBatch(NEW_BATCH_TIMESTAMP, NEW_BATCH_NUMBER, EXPECTED_BASE_FEE) - } - default { - setNewBatch(PREV_BATCH_HASH, NEW_BATCH_TIMESTAMP, NEW_BATCH_NUMBER, EXPECTED_BASE_FEE) - } - - - } + //////////////////////////////////////////////////////////////////////////// + // Function Declarations + //////////////////////////////////////////////////////////////////////////// // While we definitely cannot control the gas price on L1, // we need to check the operator does not provide any absurd numbers there - function MAX_ALLOWED_GAS_PRICE() -> ret { + function MAX_ALLOWED_L1_GAS_PRICE() -> ret { + // 100k gwei + ret := 100000000000000 + } + + function MAX_ALLOWED_FAIR_L2_GAS_PRICE() -> ret { // 10k gwei ret := 10000000000000 } @@ -85,11 +24,11 @@ object "Bootloader" { /// @dev This method ensures that the prices provided by the operator /// are not absurdly high function validateOperatorProvidedPrices(l1GasPrice, fairL2GasPrice) { - if gt(l1GasPrice, MAX_ALLOWED_GAS_PRICE()) { + if gt(l1GasPrice, MAX_ALLOWED_L1_GAS_PRICE()) { assertionError("L1 gas price too high") } - if gt(fairL2GasPrice, MAX_ALLOWED_GAS_PRICE()) { + if gt(fairL2GasPrice, MAX_ALLOWED_FAIR_L2_GAS_PRICE()) { assertionError("L2 fair gas price too high") } } @@ -99,8 +38,8 @@ object "Bootloader" { function getBaseFee(l1GasPrice, fairL2GasPrice) -> baseFee, gasPricePerPubdata { // By default, we want to provide the fair L2 gas price. // That it means that the operator controls - // what the value of the baseFee will be. In the future, - // a better system, aided by EIP1559 should be added. + // what the value of the baseFee will be. In the future, + // a better system, aided by EIP1559 should be added. let pubdataBytePriceETH := safeMul(l1GasPrice, L1_GAS_PER_PUBDATA_BYTE(), "aoa") @@ -111,20 +50,20 @@ object "Bootloader" { gasPricePerPubdata := ceilDiv(pubdataBytePriceETH, baseFee) } - /// @dev It should be always possible to submit a transaction + /// @dev It should be always possible to submit a transaction /// that consumes such amount of public data. function GUARANTEED_PUBDATA_PER_TX() -> ret { ret := {{GUARANTEED_PUBDATA_BYTES}} } - /// @dev The maximal gasPerPubdata, which allows users to still be + /// @dev The maximal gasPerPubdata, which allows users to still be /// able to send `GUARANTEED_PUBDATA_PER_TX` onchain. function MAX_L2_GAS_PER_PUBDATA() -> ret { ret := div(MAX_GAS_PER_TRANSACTION(), GUARANTEED_PUBDATA_PER_TX()) } /// @dev The computational overhead for a batch. - /// It includes the combined price for 1 instance of all the circuits + /// It includes the combined price for 1 instance of all the circuits /// (since they might be partially filled), the price for running /// the common parts of the bootloader as well as general maintainance of the system. function BATCH_OVERHEAD_L2_GAS() -> ret { @@ -132,7 +71,7 @@ object "Bootloader" { } /// @dev The overhead for the interaction with L1. - /// It should cover proof verification as well as other minor + /// It should cover proof verification as well as other minor /// overheads for committing/executing a transaction in a batch. function BATCH_OVERHEAD_L1_GAS() -> ret { ret := {{BATCH_OVERHEAD_L1_GAS}} @@ -143,14 +82,8 @@ object "Bootloader" { ret := {{MAX_GAS_PER_TRANSACTION}} } - /// @dev The maximum number of pubdata bytes that can be published with one - /// L1 batch - function MAX_PUBDATA_PER_BATCH() -> ret { - ret := {{MAX_PUBDATA_PER_BATCH}} - } - /// @dev The number of L1 gas needed to be spent for - /// L1 byte. While a single pubdata byte costs `16` gas, + /// L1 byte. While a single pubdata byte costs `16` gas, /// we demand at least 17 to cover up for the costs of additional /// hashing of it, etc. function L1_GAS_PER_PUBDATA_BYTE() -> ret { @@ -168,7 +101,7 @@ object "Bootloader" { function FORBID_ZERO_GAS_PER_PUBDATA() -> ret { ret := {{FORBID_ZERO_GAS_PER_PUBDATA}} } - + /// @dev The maximum number of transactions per L1 batch. function MAX_TRANSACTIONS_IN_BATCH() -> ret { ret := {{MAX_TRANSACTIONS_IN_BATCH}} @@ -186,20 +119,20 @@ object "Bootloader" { ret := mul(SCRATCH_SPACE_BEGIN_SLOT(), 32) } - /// @dev The first 32 slots are reserved for event emitting for the + /// @dev The first 32 slots are reserved for event emitting for the /// debugging purposes function SCRATCH_SPACE_SLOTS() -> ret { ret := 32 } /// @dev Slots reserved for saving the paymaster context - /// @dev The paymasters are allowed to consume at most + /// @dev The paymasters are allowed to consume at most /// 32 slots (1024 bytes) for their context. /// The 33 slots are required since the first one stores the length of the calldata. function PAYMASTER_CONTEXT_SLOTS() -> ret { ret := 33 } - + /// @dev Bytes reserved for saving the paymaster context function PAYMASTER_CONTEXT_BYTES() -> ret { ret := mul(PAYMASTER_CONTEXT_SLOTS(), 32) @@ -215,7 +148,7 @@ object "Bootloader" { ret := mul(PAYMASTER_CONTEXT_BEGIN_SLOT(), 32) } - /// @dev Each tx must have at least this amount of unused bytes before them to be able to + /// @dev Each tx must have at least this amount of unused bytes before them to be able to /// encode the postOp operation correctly. function MAX_POSTOP_SLOTS() -> ret { // Before the actual transaction encoding, the postOp contains 6 slots: @@ -249,7 +182,7 @@ object "Bootloader" { ret := 32 } - /// @dev Besides the factory deps themselves, we also need another 4 slots for: + /// @dev Besides the factory deps themselves, we also need another 4 slots for: /// selector, marker of whether the user should pay for the pubdata, /// the offset for the encoding of the array as well as the length of the array. function NEW_FACTORY_DEPS_RESERVED_SLOTS() -> ret { @@ -306,7 +239,7 @@ object "Bootloader" { } /// @dev byte starting from which the maximum number of gas that the operator "trusts" - /// the transaction to use for its execution is stored. + /// the transaction to use for its execution is stored. function TX_OPERATOR_TRUSTED_GAS_LIMIT_BEGIN_BYTE() -> ret { ret := mul(TX_OPERATOR_TRUSTED_GAS_LIMIT_BEGIN_SLOT(), 32) } @@ -342,8 +275,8 @@ object "Bootloader" { } /// @dev The number of slots dedicated for the L2 block information for the transactions. - /// Note, that an additional slot is required for the fictive L2 block at the end of the batch. - /// For technical reasons inside the sequencer implementation, + /// Note, that an additional slot is required for the fictive L2 block at the end of the batch. + /// For technical reasons inside the sequencer implementation, /// each batch ends with a fictive block with no transactions. function TX_OPERATOR_L2_BLOCK_INFO_SLOTS() -> ret { ret := mul(add(MAX_TRANSACTIONS_IN_BATCH(), 1), TX_OPERATOR_L2_BLOCK_INFO_SLOT_SIZE()) @@ -353,11 +286,11 @@ object "Bootloader" { /// Each compressed bytecode is provided in the following format: /// - 32 byte formatted bytecode hash /// - 32 byte of zero (it will be replaced within the code with left-padded selector of the `publishCompressedBytecode`). - /// - ABI-encoding of the parameters of the `publishCompressedBytecode` method. - /// + /// - ABI-encoding of the parameters of the `publishCompressedBytecode` method. + /// /// At the slot `TX_OPERATOR_TRUSTED_GAS_LIMIT_BEGIN_SLOT()` the pointer to the currently processed compressed bytecode /// is stored, i.e. this pointer will be increased once the current bytecode which the pointer points to is published. - /// At the start of the bootloader, the value stored at the `TX_OPERATOR_TRUSTED_GAS_LIMIT_BEGIN_SLOT` is equal to + /// At the start of the bootloader, the value stored at the `TX_OPERATOR_TRUSTED_GAS_LIMIT_BEGIN_SLOT` is equal to /// `TX_OPERATOR_TRUSTED_GAS_LIMIT_BEGIN_SLOT + 32`, where the hash of the first compressed bytecode to publish should be stored. function COMPRESSED_BYTECODES_BEGIN_SLOT() -> ret { ret := add(TX_OPERATOR_L2_BLOCK_INFO_BEGIN_SLOT(), TX_OPERATOR_L2_BLOCK_INFO_SLOTS()) @@ -383,9 +316,47 @@ object "Bootloader" { ret := mul(COMPRESSED_BYTECODES_END_SLOT(), 32) } + /// @dev Slots needed to store priority txs L1 data (`chainedPriorityTxsHash` and `numberOfLayer1Txs`). + function PRIORITY_TXS_L1_DATA_RESERVED_SLOTS() -> ret { + ret := 2 + } + + /// @dev Slot from which storing of the priority txs L1 data begins. + function PRIORITY_TXS_L1_DATA_BEGIN_SLOT() -> ret { + ret := add(COMPRESSED_BYTECODES_BEGIN_SLOT(), COMPRESSED_BYTECODES_SLOTS()) + } + + /// @dev The byte from which storing of the priority txs L1 data begins. + function PRIORITY_TXS_L1_DATA_BEGIN_BYTE() -> ret { + ret := mul(PRIORITY_TXS_L1_DATA_BEGIN_SLOT(), 32) + } + + /// @dev Slot from which storing of the L1 Messenger pubdata begins. + function OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_BEGIN_SLOT() -> ret { + ret := add(PRIORITY_TXS_L1_DATA_BEGIN_SLOT(), PRIORITY_TXS_L1_DATA_RESERVED_SLOTS()) + } + + /// @dev The byte storing of the L1 Messenger pubdata begins. + function OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_BEGIN_BYTE() -> ret { + ret := mul(OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_BEGIN_SLOT(), 32) + } + + /// @dev Slots needed to store L1 Messenger pubdata. + /// @dev Note that are many more these than the maximal pubdata in batch, since + /// it needs to also accomodate uncompressed state diffs that are required for the state diff + /// compression verification. + function OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS() -> ret { + ret := {{OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS}} + } + + /// @dev The slot right after the last slot of the L1 Messenger pubdata memory area. + function OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_END_SLOT() -> ret { + ret := add(OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_BEGIN_SLOT(), OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS()) + } + /// @dev The slot from which the bootloader transactions' descriptions begin function TX_DESCRIPTION_BEGIN_SLOT() -> ret { - ret := COMPRESSED_BYTECODES_END_SLOT() + ret := OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_END_SLOT() } /// @dev The byte from which the bootloader transactions' descriptions begin @@ -394,7 +365,7 @@ object "Bootloader" { } // Each tx description has the following structure - // + // // struct BootloaderTxDescription { // uint256 txMeta; // uint256 txDataOffset; @@ -406,7 +377,7 @@ object "Bootloader" { // 0 byte: `execute`, bool. Denotes whether transaction should be executed by the bootloader. // 31 byte: server-side tx execution mode // For proved batches: - // It can simply denotes whether to execute the transaction (0 to stop executing the batch, 1 to continue) + // It can simply denotes whether to execute the transaction (0 to stop executing the batch, 1 to continue) // // Each such encoded struct consumes 2 words function TX_DESCRIPTION_SIZE() -> ret { @@ -419,9 +390,9 @@ object "Bootloader" { } /// @dev The memory page consists of 2^19 VM words. - /// Each execution result is a single boolean, but + /// Each execution result is a single boolean, but /// for the sake of simplicity we will spend 32 bytes on each - /// of those for now. + /// of those for now. function MAX_MEM_SIZE() -> ret { ret := 0x1000000 // 2^24 bytes } @@ -485,7 +456,7 @@ object "Bootloader" { // The slot right before the vm hooks is the last slot that // can be used for transaction's descriptions /// DEBUG SUPPORT: use DEBUG_BEGIN_BYTE (as we reserve some bytes at the end of memory). - ret := sub(DEBUG_BEGIN_BYTE(), 32) + ret := sub(VM_HOOK_PARAMS_OFFSET(), 32) } /// @dev The formal address of the bootloader @@ -512,7 +483,7 @@ object "Bootloader" { function CONTRACT_DEPLOYER_ADDR() -> ret { ret := 0x0000000000000000000000000000000000008006 } - + function FORCE_DEPLOYER() -> ret { ret := 0x0000000000000000000000000000000000008007 } @@ -537,8 +508,12 @@ object "Bootloader" { ret := 0x000000000000000000000000000000000000800e } + function L1_MESSENGER_ADDR() -> ret { + ret := 0x0000000000000000000000000000000000008008 + } + /// @dev The minimal allowed distance in bytes between the pointer to the compressed data - /// and the end of the area dedicated for the compressed bytecodes. + /// and the end of the area dedicated for the compressed bytecodes. /// In fact, only distance of 192 should be sufficient: there it would be possible to insert /// the hash of the bytecode, the 32 bytes buffer for selector and 2 offsets of the calldata, /// but we keep it at 512 just in case. @@ -547,7 +522,7 @@ object "Bootloader" { } /// @dev Whether the bootloader should enforce that accounts have returned the correct - /// magic value for signature. This value is enforced to be "true" on the main proved batch, but + /// magic value for signature. This value is enforced to be "true" on the main proved batch, but /// we need the ability to ignore invalid signature results during fee estimation, /// where the signature for the transaction is usually not known beforehand. function SHOULD_ENSURE_CORRECT_RETURNED_MAGIC() -> ret { @@ -564,129 +539,12 @@ object "Bootloader" { ret := 255 } - /// @dev The overhead in gas that will be used when checking whether the context has enough gas, i.e. + /// @dev The overhead in gas that will be used when checking whether the context has enough gas, i.e. /// when checking for X gas, the context should have at least X+CHECK_ENOUGH_GAS_OVERHEAD() gas. function CHECK_ENOUGH_GAS_OVERHEAD() -> ret { ret := 1000000 } - // Now, we iterate over all transactions, processing each of them - // one by one. - // Here, the `resultPtr` is the pointer to the memory slot, where we will write - // `true` or `false` based on whether the tx execution was successful, - - // The position at which the tx offset of the transaction should be placed - let currentExpectedTxOffset := add(TXS_IN_BATCH_LAST_PTR(), mul(MAX_POSTOP_SLOTS(), 32)) - - let txPtr := TX_DESCRIPTION_BEGIN_BYTE() - - // At the COMPRESSED_BYTECODES_BEGIN_BYTE() the pointer to the newest bytecode to be published - // is stored. - mstore(COMPRESSED_BYTECODES_BEGIN_BYTE(), add(COMPRESSED_BYTECODES_BEGIN_BYTE(), 0x20)) - - // Iterating through transaction descriptions - let transactionIndex := 0 - for { - let resultPtr := RESULT_START_PTR() - } lt(txPtr, TXS_IN_BATCH_LAST_PTR()) { - txPtr := add(txPtr, TX_DESCRIPTION_SIZE()) - resultPtr := add(resultPtr, 32) - transactionIndex := add(transactionIndex, 1) - } { - let execute := mload(txPtr) - - debugLog("txPtr", txPtr) - debugLog("execute", execute) - - if iszero(execute) { - // We expect that all transactions that are executed - // are continuous in the array. - break - } - - let txDataOffset := mload(add(txPtr, 0x20)) - - // We strongly enforce the positions of transactions - if iszero(eq(currentExpectedTxOffset, txDataOffset)) { - debugLog("currentExpectedTxOffset", currentExpectedTxOffset) - debugLog("txDataOffset", txDataOffset) - - assertionError("Tx data offset is incorrect") - } - - currentExpectedTxOffset := validateAbiEncoding(txDataOffset) - - // Checking whether the last slot of the transaction's description - // does not go out of bounds. - if gt(sub(currentExpectedTxOffset, 32), LAST_FREE_SLOT()) { - debugLog("currentExpectedTxOffset", currentExpectedTxOffset) - debugLog("LAST_FREE_SLOT", LAST_FREE_SLOT()) - - assertionError("currentExpectedTxOffset too high") - } - - validateTypedTxStructure(add(txDataOffset, 0x20)) - - - { - debugLog("ethCall", 0) - processTx(txDataOffset, resultPtr, transactionIndex, 0, GAS_PRICE_PER_PUBDATA) - } - - - { - let txMeta := mload(txPtr) - let processFlags := getWordByte(txMeta, 31) - debugLog("flags", processFlags) - - - // `processFlags` argument denotes which parts of execution should be done: - // Possible values: - // 0x00: validate & execute (normal mode) - // 0x02: perform ethCall (i.e. use mimicCall to simulate the call) - - let isETHCall := eq(processFlags, 0x02) - debugLog("ethCall", isETHCall) - processTx(txDataOffset, resultPtr, transactionIndex, isETHCall, GAS_PRICE_PER_PUBDATA) - } - - // Signal to the vm that the transaction execution is complete - setHook(VM_HOOK_TX_HAS_ENDED()) - // Increment tx index within the system. - considerNewTx() - } - - // The bootloader doesn't have to pay anything - setPricePerPubdataByte(0) - - // Resetting tx.origin and gasPrice to 0, so we don't pay for - // publishing them on-chain. - setTxOrigin(0) - setGasPrice(0) - - // Transferring all the ETH received in the batch to the operator - directETHTransfer( - selfbalance(), - OPERATOR_ADDRESS - ) - - // Hook that notifies that the operator should provide final information for the batch - setHook(VM_HOOK_FINAL_L2_STATE_INFO()) - - // Each batch typically ends with a special block which contains no transactions. - // So we need to have this method to reflect it in the system contracts too. - // - // The reason is that as of now our node requires that each storage write (event, etc) belongs to a particular - // L2 block. In case a batch is sealed by timeout (i.e. the resources of the batch have not been exhaused, but we need - // to seal it to assure timely finality), we need to process sending funds to the operator *after* the last - // non-empty L2 block has been already sealed. We can not override old L2 blocks, so we need to create a new empty "fictive" block for it. - // - // The other reason why we need to set this block is so that in case of empty batch (i.e. the one which has no transactions), - // the virtual block number as well as miniblock number are incremented. - setL2Block(transactionIndex) - - publishBatchDataToL1() - /// @dev Ceil division of integers function ceilDiv(x, y) -> ret { switch or(eq(x, 0), eq(y, 0)) @@ -698,7 +556,7 @@ object "Bootloader" { ret := 0 } } - + /// @dev Calculates the length of a given number of bytes rounded up to the nearest multiple of 32. function lengthRoundedByWords(len) -> ret { let neededWords := div(add(len, 31), 32) @@ -709,11 +567,11 @@ object "Bootloader" { /// @param txDataOffset The offset to the ABI-encoding of the structure /// @param resultPtr The pointer at which the result of the transaction's execution should be stored /// @param transactionIndex The index of the transaction in the batch - /// @param isETHCall Whether the call is an ethCall. - /// @param gasPerPubdata The number of L2 gas to charge users for each byte of pubdata + /// @param isETHCall Whether the call is an ethCall. + /// @param gasPerPubdata The number of L2 gas to charge users for each byte of pubdata /// On proved batch this value should always be zero function processTx( - txDataOffset, + txDataOffset, resultPtr, transactionIndex, isETHCall, @@ -722,7 +580,7 @@ object "Bootloader" { // We set the L2 block info for this particular transaction setL2Block(transactionIndex) - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) // By default we assume that the transaction has failed. mstore(resultPtr, 0) @@ -732,30 +590,36 @@ object "Bootloader" { debugLog("gasPerPubdata:", gasPerPubdata) - switch getTxType(innerTxDataOffset) + switch getTxType(innerTxDataOffset) case 254 { // This is an upgrade transaction. // Protocol upgrade transactions are processed totally in the same manner as the normal L1->L2 transactions, // the only difference are: // - They must be the first one in the batch - // - They have a different type to prevent tx hash collisions and preserve the expectation that the + // - They have a different type to prevent tx hash collisions and preserve the expectation that the // L1->L2 transactions have priorityTxId inside them. - if transactionIndex { + if transactionIndex { assertionError("Protocol upgrade tx not first") } - processL1Tx(txDataOffset, resultPtr, transactionIndex, userProvidedPubdataPrice) + // This is to be called in the event that the L1 Transaction is a protocol upgrade txn. + // Since this is upgrade transactions, we are okay that the gasUsed by the transaction will + // not cover this additional hash computation + let canonicalL1TxHash := getCanonicalL1TxHash(txDataOffset) + sendToL1Native(true, protocolUpgradeTxHashKey(), canonicalL1TxHash) + + processL1Tx(txDataOffset, resultPtr, transactionIndex, userProvidedPubdataPrice, false) } case 255 { // This is an L1->L2 transaction. - processL1Tx(txDataOffset, resultPtr, transactionIndex, userProvidedPubdataPrice) + processL1Tx(txDataOffset, resultPtr, transactionIndex, userProvidedPubdataPrice, true) } default { // The user has not agreed to this pubdata price if lt(userProvidedPubdataPrice, gasPerPubdata) { revertWithReason(UNACCEPTABLE_GAS_PRICE_ERR_CODE(), 0) } - + setPricePerPubdataByte(gasPerPubdata) @@ -763,7 +627,7 @@ object "Bootloader" { - switch isETHCall + switch isETHCall case 1 { let gasLimit := getGasLimit(innerTxDataOffset) let nearCallAbi := getNearCallABI(gasLimit) @@ -783,7 +647,7 @@ object "Bootloader" { resultPtr ) } - default { + default { processL2Tx(txDataOffset, resultPtr, transactionIndex, gasPerPubdata) } @@ -791,21 +655,21 @@ object "Bootloader" { } /// @dev Checks whether the code hash of the system context contract is correct and updates it if needed. - /// @dev The bootloader implementation strictly relies of the ability of the system context contract to work with the - /// L2 blocks. However, the old system context did not support the correspodning interface at all. Usually we upgrade system context + /// @dev The L1 contracts expect all the system logs to be present in the first boojum upgrade batch already. + /// However, the old system context did not send the same system logs. Usually we upgrade system context /// via an upgrade transaction, but in this case the transaction won't be even processed, because of failure to create an L2 block. function upgradeSystemContextIfNeeded() { let expectedCodeHash := {{SYSTEM_CONTEXT_EXPECTED_CODE_HASH}} - + let actualCodeHash := extcodehash(SYSTEM_CONTEXT_ADDR()) if iszero(eq(expectedCodeHash, actualCodeHash)) { // Preparing the calldata to upgrade the SystemContext contract {{UPGRADE_SYSTEM_CONTEXT_CALLDATA}} - + // We'll use a mimicCall to simulate the correct sender. let success := mimicCallOnlyResult( CONTRACT_DEPLOYER_ADDR(), - FORCE_DEPLOYER(), + FORCE_DEPLOYER(), 0, 0, 0, @@ -823,12 +687,12 @@ object "Bootloader" { /// @dev Calculates the canonical hash of the L1->L2 transaction that will be /// sent to L1 as a message to the L1 contract that a certain operation has been processed. function getCanonicalL1TxHash(txDataOffset) -> ret { - // Putting the correct value at the `txDataOffset` just in case, since + // Putting the correct value at the `txDataOffset` just in case, since // the correctness of this value is not part of the system invariants. // Note, that the correct ABI encoding of the Transaction structure starts with 0x20 - mstore(txDataOffset, 0x20) + mstore(txDataOffset, 32) - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let dataLength := safeAdd(32, getDataLength(innerTxDataOffset), "qev") debugLog("HASH_OFFSET", innerTxDataOffset) @@ -838,12 +702,12 @@ object "Bootloader" { } /// @dev The purpose of this function is to make sure that the operator - /// gets paid for the transaction. Note, that the beneficiary of the payment is + /// gets paid for the transaction. Note, that the beneficiary of the payment is /// bootloader. /// The operator will be paid at the end of the batch. function ensurePayment(txDataOffset, gasPrice) { // Skipping the first 0x20 byte in the encoding of the transaction. - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let from := getFrom(innerTxDataOffset) let requiredETH := safeMul(getGasLimit(innerTxDataOffset), gasPrice, "lal") @@ -869,10 +733,10 @@ object "Bootloader" { 1 ) } - } + } default { // There is some paymaster present. - payer := paymaster + payer := paymaster // Firstly, the `prepareForPaymaster` method of the user's account is called. setHook(VM_HOOK_ACCOUNT_VALIDATION_ENTERED()) @@ -903,7 +767,7 @@ object "Bootloader" { let bootloaderReceivedFunds := safeSub(balance(BOOTLOADER_FORMAL_ADDR()), bootloaderBalanceETH, "qsx") // If the amount of funds provided to the bootloader is less than the minimum required one - // then this transaction should be rejected. + // then this transaction should be rejected. if lt(bootloaderReceivedFunds, requiredETH) { revertWithReason( FAILED_TO_CHARGE_FEE_ERR_CODE(), @@ -911,7 +775,7 @@ object "Bootloader" { ) } - let excessiveFunds := safeSub(bootloaderReceivedFunds, requiredETH, "llm") + let excessiveFunds := safeSub(bootloaderReceivedFunds, requiredETH, "llm") if gt(excessiveFunds, 0) { // Returning back the excessive funds taken. @@ -920,7 +784,7 @@ object "Bootloader" { } /// @notice Mints ether to the recipient - /// @param to -- the address of the recipient + /// @param to -- the address of the recipient /// @param amount -- the amount of ETH to mint /// @param useNearCallPanic -- whether to use nearCallPanic in case of /// the transaction failing to execute. It is desirable in cases @@ -939,7 +803,7 @@ object "Bootloader" { 0 ) if iszero(success) { - switch useNearCallPanic + switch useNearCallPanic case 0 { revertWithReason( MINT_ETHER_FAILED_ERR_CODE(), @@ -952,9 +816,9 @@ object "Bootloader" { } } - /// @dev Saves the paymaster context and checks that the paymaster has returned the correct + /// @dev Saves the paymaster context and checks that the paymaster has returned the correct /// magic value. - /// @dev IMPORTANT: this method should be called right after + /// @dev IMPORTANT: this method should be called right after /// the validateAndPayForPaymasterTransaction method to keep the `returndata` from that transaction function storePaymasterContextAndCheckMagic() { // The paymaster validation step should return context of type "bytes context" @@ -962,7 +826,7 @@ object "Bootloader" { // 0x20 || context_len || context_bytes... let returnlen := returndatasize() // The minimal allowed returndatasize is 64: magicValue || offset - if lt(returnlen, 0x40) { + if lt(returnlen, 64) { revertWithReason( PAYMASTER_RETURNED_INVALID_CONTEXT(), 0 @@ -971,10 +835,10 @@ object "Bootloader" { // Note that it is important to copy the magic even though it is not needed if the // `SHOULD_ENSURE_CORRECT_RETURNED_MAGIC` is false. It is never false in production - // but it is so in fee estimation and we want to preserve as many operations as + // but it is so in fee estimation and we want to preserve as many operations as // in the original operation. { - returndatacopy(0, 0, 0x20) + returndatacopy(0, 0, 32) let magic := mload(0) let isMagicCorrect := eq(magic, {{SUCCESSFUL_PAYMASTER_VALIDATION_MAGIC_VALUE}}) @@ -1031,14 +895,14 @@ object "Bootloader" { ) } - if gt(add(returnedContextOffset, add(0x20, returnedContextLen)), returnlen) { + if gt(add(returnedContextOffset, add(32, returnedContextLen)), returnlen) { revertWithReason( PAYMASTER_RETURNED_INVALID_CONTEXT(), 0 ) } - returndatacopy(PAYMASTER_CONTEXT_BEGIN_BYTE(), returnedContextOffset, add(0x20, returnedContextLen)) + returndatacopy(PAYMASTER_CONTEXT_BEGIN_BYTE(), returnedContextOffset, add(32, returnedContextLen)) } /// @dev The function responsible for processing L1->L2 transactions. @@ -1046,26 +910,28 @@ object "Bootloader" { /// @param resultPtr The pointer at which the result of the execution of this transaction /// @param transactionIndex The index of the transaction /// @param gasPerPubdata The price per pubdata to be used + /// @param isPriorityOp Whether the transaction is a priority one /// should be stored. function processL1Tx( txDataOffset, resultPtr, transactionIndex, gasPerPubdata, + isPriorityOp ) { - // For L1->L2 transactions we always use the pubdata price provided by the transaction. - // This is needed to ensure DDoS protection. All the excess expenditure + // For L1->L2 transactions we always use the pubdata price provided by the transaction. + // This is needed to ensure DDoS protection. All the excess expenditure // will be refunded to the user. setPricePerPubdataByte(gasPerPubdata) // Skipping the first formal 0x20 byte - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let gasLimitForTx, reservedGas := getGasLimitForTx( - innerTxDataOffset, - transactionIndex, - gasPerPubdata, - L1_TX_INTRINSIC_L2_GAS(), + innerTxDataOffset, + transactionIndex, + gasPerPubdata, + L1_TX_INTRINSIC_L2_GAS(), L1_TX_INTRINSIC_PUBDATA() ) @@ -1081,7 +947,7 @@ object "Bootloader" { // for the transaction must be enforced on L1, but we double check it here let gasLimit := getGasLimit(innerTxDataOffset) - // Note, that for now the property of block.base <= tx.maxFeePerGas does not work + // Note, that for now the property of block.base <= tx.maxFeePerGas does not work // for L1->L2 transactions. For now, these transactions are processed with the same gasPrice // they were provided on L1. In the future, we may apply a new logic for it. let gasPrice := getMaxFeePerGas(innerTxDataOffset) @@ -1090,7 +956,7 @@ object "Bootloader" { if lt(getReserved0(innerTxDataOffset), safeAdd(value, txInternalCost, "ol")) { assertionError("deposited eth too low") } - + if gt(gasLimitForTx, gasUsedOnPreparation) { let potentialRefund := 0 @@ -1101,11 +967,9 @@ object "Bootloader" { // In case the operator provided smaller refund than the one calculated // by the bootloader, we return the refund calculated by the bootloader. - refundGas := max(getOperatorRefundForTx(transactionIndex), potentialRefund) + refundGas := max(getOperatorRefundForTx(transactionIndex), safeAdd(potentialRefund, reservedGas, "iop")) } - refundGas := add(refundGas, reservedGas) - if gt(refundGas, gasLimit) { assertionError("L1: refundGas > gasLimit") } @@ -1114,7 +978,7 @@ object "Bootloader" { // Note, that for now, the L1->L2 transactions are free, i.e. the gasPrice // for such transactions is always zero, so the `refundGas` is not used anywhere - // except for notifications for the operator for API purposes. + // except for notifications for the operator for API purposes. notifyAboutRefund(refundGas) // Paying the fee to the operator @@ -1123,14 +987,18 @@ object "Bootloader" { let toRefundRecipient switch success case 0 { + if iszero(isPriorityOp) { + // Upgrade transactions must always succeed + assertionError("Upgrade tx failed") + } + // If the transaction reverts, then minting the msg.value to the user has been reverted - // as well, so we can simply mint everything that the user has deposited to + // as well, so we can simply mint everything that the user has deposited to // the refund recipient - toRefundRecipient := safeSub(getReserved0(innerTxDataOffset), payToOperator, "vji") } default { - // If the transaction succeeds, then it is assumed that msg.value was transferred correctly. However, the remaining + // If the transaction succeeds, then it is assumed that msg.value was transferred correctly. However, the remaining // ETH deposited will be given to the refund recipient. toRefundRecipient := safeSub(getReserved0(innerTxDataOffset), safeAdd(getValue(innerTxDataOffset), payToOperator, "kpa"), "ysl") @@ -1142,15 +1010,22 @@ object "Bootloader" { // In case of an issue in L1 contracts, we still will be able to process tx. refundRecipient := and(refundRecipient, sub(shl(160, 1), 1)) mintEther(refundRecipient, toRefundRecipient, false) - } + } mstore(resultPtr, success) - + debugLog("Send message to L1", success) - - // Sending the L2->L1 to notify the L1 contracts that the priority - // operation has been processed. - sendToL1(true, canonicalL1TxHash, success) + + // Sending the L2->L1 log so users will be able to prove transaction execution result on L1. + sendL2LogUsingL1Messenger(true, canonicalL1TxHash, success) + + if isPriorityOp { + // Update priority txs L1 data + mstore(0, mload(PRIORITY_TXS_L1_DATA_BEGIN_BYTE())) + mstore(32, canonicalL1TxHash) + mstore(PRIORITY_TXS_L1_DATA_BEGIN_BYTE(), keccak256(0, 64)) + mstore(add(PRIORITY_TXS_L1_DATA_BEGIN_BYTE(), 32), add(mload(add(PRIORITY_TXS_L1_DATA_BEGIN_BYTE(), 32)), 1)) + } } function getExecuteL1TxAndGetRefund(txDataOffset, gasForExecution) -> potentialRefund, success { @@ -1180,8 +1055,8 @@ object "Bootloader" { /// @return canonicalL1TxHash The hash of processed L1->L2 transaction /// @return gasUsedOnPreparation The number of L2 gas used in the preparation stage function l1TxPreparation(txDataOffset) -> canonicalL1TxHash, gasUsedOnPreparation { - let innerTxDataOffset := add(txDataOffset, 0x20) - + let innerTxDataOffset := add(txDataOffset, 32) + let gasBeforePreparation := gas() debugLog("gasBeforePreparation", gasBeforePreparation) @@ -1199,12 +1074,12 @@ object "Bootloader" { debugLog("gasUsedOnPreparation", gasUsedOnPreparation) } - /// @dev Returns the gas price that should be used by the transaction + /// @dev Returns the gas price that should be used by the transaction /// based on the EIP1559's maxFeePerGas and maxPriorityFeePerGas. /// The following invariants should hold: /// maxPriorityFeePerGas <= maxFeePerGas /// baseFee <= maxFeePerGas - /// While we charge baseFee from the users, the method is mostly used as a method for validating + /// While we charge baseFee from the users, the method is mostly used as a method for validating /// the correctness of the fee parameters function getGasPrice( maxFeePerGas, @@ -1226,7 +1101,7 @@ object "Bootloader" { ) } - // We always use `baseFee` to charge the transaction + // We always use `baseFee` to charge the transaction ret := baseFee } @@ -1248,7 +1123,7 @@ object "Bootloader" { // Firsly, we publish all the bytecodes needed. This is needed to be done separately, since // bytecodes usually form the bulk of the L2 gas prices. - + let gasLimitForTx, reservedGas := getGasLimitForTx(innerTxDataOffset, transactionIndex, gasPerPubdata, L2_TX_INTRINSIC_GAS(), L2_TX_INTRINSIC_PUBDATA()) @@ -1275,7 +1150,7 @@ object "Bootloader" { /// /// DEBUG SUPPORT END - /// + /// let gasPrice := getGasPrice(getMaxFeePerGas(innerTxDataOffset), getMaxPriorityFeePerGas(innerTxDataOffset)) @@ -1286,6 +1161,7 @@ object "Bootloader" { gasLimitForTx, gasPrice ) + /// /// DEBUG SUPPORT START /// @@ -1293,7 +1169,7 @@ object "Bootloader" { mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 5)), gasLeft) /// /// DEBUG SUPPORT END - /// + /// debugLog("validation finished", 0) @@ -1307,7 +1183,7 @@ object "Bootloader" { mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 6)), gasSpentOnExecute) /// /// DEBUG SUPPORT END - /// + /// debugLog("execution finished", 0) @@ -1323,11 +1199,12 @@ object "Bootloader" { mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 8)), gasToRefund) /// /// DEBUG SUPPORT END - /// + /// // Note, that we pass reservedGas from the refundGas separately as it should not be used // during the postOp execution. + refund := refundCurrentL2Transaction( txDataOffset, transactionIndex, @@ -1336,13 +1213,14 @@ object "Bootloader" { gasPrice, reservedGas ) + /// /// DEBUG SUPPORT START /// mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 9)), refund) /// /// DEBUG SUPPORT END - /// + /// debugLog("refund", 0) @@ -1368,13 +1246,13 @@ object "Bootloader" { ) -> gasLimitForTx, reservedGas { let totalGasLimit := getGasLimit(innerTxDataOffset) - // `MAX_GAS_PER_TRANSACTION` is the amount of gas each transaction + // `MAX_GAS_PER_TRANSACTION` is the amount of gas each transaction // is guaranteed to get, so even if the operator does not trust the account enough, // it is still obligated to provide at least that let operatorTrustedGasLimit := max(MAX_GAS_PER_TRANSACTION(), getOperatorTrustedGasLimitForTx(transactionIndex)) // We remember the amount of gas that is beyond the operator's trust limit to refund it back later. - switch gt(totalGasLimit, operatorTrustedGasLimit) + switch gt(totalGasLimit, operatorTrustedGasLimit) case 0 { reservedGas := 0 } @@ -1383,7 +1261,7 @@ object "Bootloader" { totalGasLimit := operatorTrustedGasLimit } - let txEncodingLen := safeAdd(0x20, getDataLength(innerTxDataOffset), "lsh") + let txEncodingLen := safeAdd(32, getDataLength(innerTxDataOffset), "lsh") let operatorOverheadForTransaction := getVerifiedOperatorOverheadForTx( transactionIndex, @@ -1394,21 +1272,21 @@ object "Bootloader" { gasLimitForTx := safeSub(totalGasLimit, operatorOverheadForTransaction, "qr") let intrinsicOverhead := safeAdd( - intrinsicGas, + intrinsicGas, // the error messages are trimmed to fit into 32 bytes safeMul(intrinsicPubdata, gasPerPubdata, "qw"), - "fj" + "fj" ) /// /// DEBUG SUPPORT START - /// + /// mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 11)), operatorOverheadForTransaction) // Fixed overhead. mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 10)), intrinsicOverhead) /// /// DEBUG SUPPORT END - /// + /// switch lt(gasLimitForTx, intrinsicOverhead) @@ -1424,7 +1302,7 @@ object "Bootloader" { /// @param txDataOffset The offset to the ABI-encoded Transaction struct. /// @param gasLimitForTx The L2 gas limit for the transaction validation & execution. /// @param gasPrice The L2 gas price that should be used by the transaction. - /// @return ergsLeft The ergs left after the validation step. + /// @return gasLeft The gas left after the validation step. function l2TxValidation( txDataOffset, gasLimitForTx, @@ -1453,7 +1331,12 @@ object "Bootloader" { debugLog("validateABI", validateABI) - isValid := ZKSYNC_NEAR_CALL_validateTx(validateABI, txDataOffset, gasPrice) + + isValid := ZKSYNC_NEAR_CALL_validateTx(validateABI, txDataOffset, gasPrice) + + + isValid := 1 + } debugLog("isValid", isValid) @@ -1476,9 +1359,9 @@ object "Bootloader" { /// @dev The function responsible for the execution step of the L2 transaction. /// @param txDataOffset The offset to the ABI-encoded Transaction struct. - /// @param ergsLeft The ergs left after the validation step. + /// @param gasLeft The gas left after the validation step. /// @return success Whether or not the execution step was successful. - /// @return ergsSpentOnExecute The ergs spent on the transaction execution. + /// @return gasSpentOnExecute The gas spent on the transaction execution. function l2TxExecution( txDataOffset, gasLeft, @@ -1495,14 +1378,14 @@ object "Bootloader" { /// /// DEBUG SUPPORT START - /// + /// // Gas spent on fetching and unpacking the bytecodes. mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 7)), gasSpentOnFactoryDeps) /// /// DEBUG SUPPORT END - /// + /// // If marking of factory dependencies has been unsuccessful, 0 value is returned. // Otherwise, all the previous dependencies have been successfully published, so @@ -1511,7 +1394,7 @@ object "Bootloader" { mstore(COMPRESSED_BYTECODES_BEGIN_BYTE(), newCompressedFactoryDepsPointer) } - switch gt(gasLeft, gasSpentOnFactoryDeps) + switch gt(gasLeft, gasSpentOnFactoryDeps) case 0 { gasSpentOnExecute := gasLeft gasLeft := 0 @@ -1519,7 +1402,7 @@ object "Bootloader" { default { // Note, that since gt(gasLeft, gasSpentOnFactoryDeps) = true // sub(gasLeft, gasSpentOnFactoryDeps) > 0, which is important - // because a nearCall with 0 ergs passes on all the ergs of the parent frame. + // because a nearCall with 0 gas passes on all the gas of the parent frame. gasLeft := sub(gasLeft, gasSpentOnFactoryDeps) let executeABI := getNearCallABI(gasLeft) @@ -1527,10 +1410,18 @@ object "Bootloader" { let gasBeforeExecute := gas() // for this one, we don't care whether or not it fails. + success := ZKSYNC_NEAR_CALL_executeL2Tx( executeABI, txDataOffset ) + + + success := ZKSYNC_NEAR_CALL_executeL2TxImpersonating( + executeABI, + txDataOffset + ) + gasSpentOnExecute := add(gasSpentOnFactoryDeps, sub(gasBeforeExecute, gas())) } @@ -1538,7 +1429,7 @@ object "Bootloader" { notifyExecutionResult(success) } - /// @dev Function responsible for the validation & fee payment step of the transaction. + /// @dev Function responsible for the validation & fee payment step of the transaction. /// @param abi The nearCall ABI. It is implicitly used as gasLimit for the call of this function. /// @param txDataOffset The offset to the ABI-encoded Transaction struct. /// @param gasPrice The gasPrice to be used in this transaction. @@ -1550,22 +1441,22 @@ object "Bootloader" { // For the validation step we always use the bootloader as the tx.origin of the transaction setTxOrigin(BOOTLOADER_FORMAL_ADDR()) setGasPrice(gasPrice) - + // Skipping the first 0x20 word of the ABI-encoding - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) debugLog("Starting validation", 0) accountValidateTx(txDataOffset) debugLog("Tx validation complete", 1) - + ensurePayment(txDataOffset, gasPrice) - + ret := 1 } /// @dev Function responsible for the execution of the L2 transaction. /// It includes both the call to the `executeTransaction` method of the account - /// and the call to postOp of the account. + /// and the call to postOp of the account. /// @param abi The nearCall ABI. It is implicitly used as gasLimit for the call of this function. /// @param txDataOffset The offset to the ABI-encoded Transaction struct. function ZKSYNC_NEAR_CALL_executeL2Tx( @@ -1573,7 +1464,7 @@ object "Bootloader" { txDataOffset ) -> success { // Skipping the first word of the ABI-encoding encoding - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let from := getFrom(innerTxDataOffset) debugLog("Executing L2 tx", 0) @@ -1581,7 +1472,7 @@ object "Bootloader" { switch isEOA(from) case true { setTxOrigin(from) - } + } default { setTxOrigin(BOOTLOADER_FORMAL_ADDR()) } @@ -1590,6 +1481,36 @@ object "Bootloader" { debugLog("Executing L2 ret", success) } + + function ZKSYNC_NEAR_CALL_executeL2TxImpersonating( + abi, + txDataOffset + ) -> success { + let innerTxDataOffset := add(txDataOffset, 32) + let to := getTo(innerTxDataOffset) + let from := getFrom(innerTxDataOffset) + let value := getValue(innerTxDataOffset) + let dataPtr := getDataPtr(innerTxDataOffset) + + debugLog("Executing L2 tx", 0) + switch isEOA(from) + case true { + setTxOrigin(from) + } + default { + setTxOrigin(0) + } + + success := msgValueSimulatorMimicCall( + to, + from, + value, + dataPtr + ) + debugLog("Executing L2 ret", success) + } + + /// @dev Sets factory dependencies for an L2 transaction with possible usage of packed bytecodes. function ZKSYNC_NEAR_CALL_markFactoryDepsL2( abi, @@ -1598,7 +1519,7 @@ object "Bootloader" { let innerTxDataOffset := add(txDataOffset, 32) /// Note, that since it is the near call when it panics it reverts the state changes, but it DOES NOT - /// revert the changes in *memory* of the current frame. That is why we do not change the value under + /// revert the changes in *memory* of the current frame. That is why we do not change the value under /// COMPRESSED_BYTECODES_BEGIN_BYTE(), and it is only changed outside of this method. let dataInfoPtr := mload(COMPRESSED_BYTECODES_BEGIN_BYTE()) let factoryDepsPtr := getFactoryDepsPtr(innerTxDataOffset) @@ -1626,8 +1547,8 @@ object "Bootloader" { } // For all the bytecodes that have not been compressed on purpose or due to the inefficiency - // of compressing the entire preimage of the bytecode will be published. - // For bytecodes published in the previous step, no need pubdata will have to be published + // of compressing the entire preimage of the bytecode will be published. + // For bytecodes published in the previous step, no need pubdata will have to be published markFactoryDepsForTx(innerTxDataOffset, false) newDataInfoPtr := dataInfoPtr @@ -1654,13 +1575,13 @@ object "Bootloader" { } - /// @dev Used to refund the current transaction. - /// The gas that this transaction consumes has been already paid in the + /// @dev Used to refund the current transaction. + /// The gas that this transaction consumes has been already paid in the /// process of the validation function refundCurrentL2Transaction( txDataOffset, transactionIndex, - success, + success, gasLeft, gasPrice, reservedGas @@ -1669,7 +1590,7 @@ object "Bootloader" { finalRefund := 0 - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let paymaster := getPaymaster(innerTxDataOffset) let refundRecipient := 0 @@ -1680,8 +1601,9 @@ object "Bootloader" { } default { refundRecipient := paymaster - + if gt(gasLeft, 0) { + checkEnoughGas(gasLeft) let nearCallAbi := getNearCallABI(gasLeft) let gasBeforePostOp := gas() pop(ZKSYNC_NEAR_CALL_callPostOp( @@ -1690,25 +1612,27 @@ object "Bootloader" { paymaster, txDataOffset, success, - gasLeft + // Since the paymaster will be refunded with reservedGas, + // it should know about it + safeAdd(gasLeft, reservedGas, "jkl") )) let gasSpentByPostOp := sub(gasBeforePostOp, gas()) - switch gt(gasLeft, gasSpentByPostOp) - case 1 { + switch gt(gasLeft, gasSpentByPostOp) + case 1 { gasLeft := sub(gasLeft, gasSpentByPostOp) } default { gasLeft := 0 } - } + } } askOperatorForRefund(gasLeft) let operatorProvidedRefund := getOperatorRefundForTx(transactionIndex) - // If the operator provides the value that is lower than the one suggested for + // If the operator provides the value that is lower than the one suggested for // the bootloader, we will use the one calculated by the bootloader. let refundInGas := max(operatorProvidedRefund, add(reservedGas, gasLeft)) @@ -1722,10 +1646,10 @@ object "Bootloader" { } let ethToRefund := safeMul( - refundInGas, - gasPrice, + refundInGas, + gasPrice, "fdf" - ) + ) directETHTransfer(ethToRefund, refundRecipient) @@ -1745,7 +1669,7 @@ object "Bootloader" { gas(), ETH_L2_TOKEN_ADDR(), 0, - 0, + 0, 100, 0, 0 @@ -1785,10 +1709,10 @@ object "Bootloader" { if gt(pointer, sub(COMPRESSED_BYTECODES_END_BYTE(), MIN_ALLOWED_OFFSET_FOR_COMPRESSED_BYTES_POINTER())) { assertionError("calldataEncoding too big") } - } + } /// @dev It is expected that the pointer at the COMPRESSED_BYTECODES_BEGIN_BYTE() - /// stores the position of the current bytecodeHash + /// stores the position of the current bytecodeHash function sendCompressedBytecode(dataInfoPtr, bytecodeHash) -> ret { // Storing the right selector, ensuring that the operator cannot manipulate it mstore(add(dataInfoPtr, 32), {{PUBLISH_COMPRESSED_BYTECODE_SELECTOR}}) @@ -1815,8 +1739,8 @@ object "Bootloader" { checkOffset(nextAfterCalldata) let totalLen := safeSub(nextAfterCalldata, calldataPtr, "xqwf") - - // Note, that it is safe because the + + // Note, that it is safe because the let success := call( gas(), BYTECODE_COMPRESSOR_ADDR(), @@ -1838,7 +1762,7 @@ object "Bootloader" { let returnedBytecodeHash := mload(0) // If the bytecode hash calculated on the bytecode compressor's side - // is not equal to the one provided by the operator means that the operator is + // is not equal to the one provided by the operator means that the operator is // malicious and we should revert the batch altogether if iszero(eq(returnedBytecodeHash, bytecodeHash)) { assertionError("bytecodeHash incorrect") @@ -1850,7 +1774,7 @@ object "Bootloader" { /// @dev Get checked for overcharged operator's overhead for the transaction. /// @param transactionIndex The index of the transaction in the batch /// @param txTotalGasLimit The total gass limit of the transaction (including the overhead). - /// @param gasPerPubdataByte The price for pubdata byte in ergs. + /// @param gasPerPubdataByte The price for pubdata byte in gas. /// @param txEncodeLen The length of the ABI-encoding of the transaction function getVerifiedOperatorOverheadForTx( transactionIndex, @@ -1871,11 +1795,11 @@ object "Bootloader" { ) /// /// DEBUG SUPPORT START - /// + /// mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 12)), requiredOverhead) /// /// DEBUG SUPPORT END - /// + /// debugLog("txTotalGasLimit", txTotalGasLimit) @@ -1899,7 +1823,7 @@ object "Bootloader" { txDataOffset ) -> success { // Skipping the first word of the ABI encoding of the struct - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let from := getFrom(innerTxDataOffset) let gasPrice := getMaxFeePerGas(innerTxDataOffset) @@ -1950,15 +1874,15 @@ object "Bootloader" { precompileCall(gas()) } - /// @dev Executes the `precompileCall` opcode. + /// @dev Executes the `precompileCall` opcode. /// Since the bootloader has no implicit meaning for this opcode, /// this method just burns gas. function precompileCall(gasToBurn) { - // We don't care about the return value, since it is a opcode simulation + // We don't care about the return value, since it is a opcode simulation // and the return value doesn't have any meaning. let ret := verbatim_2i_1o("precompile", 0, gasToBurn) } - + /// @dev Returns the pointer to the latest returndata. function returnDataPtr() -> ret { ret := verbatim_0i_1o("get_global::ptr_return_data") @@ -1971,10 +1895,10 @@ object "Bootloader" { txDataOffset, resultPtr ) { - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let to := getTo(innerTxDataOffset) let from := getFrom(innerTxDataOffset) - + debugLog("from: ", from) debugLog("to: ", to) @@ -1988,7 +1912,7 @@ object "Bootloader" { let dataPtr := getDataPtr(innerTxDataOffset) markFactoryDepsForTx(innerTxDataOffset, false) - + let value := getValue(innerTxDataOffset) let success := msgValueSimulatorMimicCall( @@ -2009,7 +1933,7 @@ object "Bootloader" { mstore(resultPtr, success) // Store results of the call in the memory. - if success { + if success { let returnsize := returndatasize() returndatacopy(0,0,returnsize) return(0,returnsize) @@ -2018,6 +1942,37 @@ object "Bootloader" { } + /// @dev Given the callee and the data to be called with, + /// this function returns whether the mimicCall should use the `isSystem` flag. + /// This flag should only be used for contract deployments and nothing else. + /// @param to The callee of the call. + /// @param dataPtr The pointer to the calldata of the transaction. + function shouldMsgValueMimicCallBeSystem(to, dataPtr) -> ret { + let dataLen := mload(dataPtr) + // Note, that this point it is not fully known whether it is indeed the selector + // of the calldata (it might not be the case if the `dataLen` < 4), but it will be checked later on + let selector := shr(224, mload(add(dataPtr, 32))) + + let isSelectorCreate := or( + eq(selector, {{CREATE_SELECTOR}}), + eq(selector, {{CREATE_ACCOUNT_SELECTOR}}) + ) + let isSelectorCreate2 := or( + eq(selector, {{CREATE2_SELECTOR}}), + eq(selector, {{CREATE2_ACCOUNT_SELECTOR}}) + ) + + // Firstly, ensure that the selector is a valid deployment function + ret := or( + isSelectorCreate, + isSelectorCreate2 + ) + // Secondly, ensure that the callee is ContractDeployer + ret := and(ret, eq(to, CONTRACT_DEPLOYER_ADDR())) + // Thirdly, ensure that the calldata is long enough to contain the selector + ret := and(ret, gt(dataLen, 3)) + } + /// @dev Given the pointer to the calldata, the value and to /// performs the call through the msg.value simulator. /// @param to Which contract to call @@ -2027,11 +1982,11 @@ object "Bootloader" { /// the length of the calldata and the calldata itself right afterwards. function msgValueSimulatorMimicCall(to, from, value, dataPtr) -> success { // Only calls to the deployer system contract are allowed to be system - let isSystem := eq(to, CONTRACT_DEPLOYER_ADDR()) + let isSystem := shouldMsgValueMimicCallBeSystem(to, dataPtr) success := mimicCallOnlyResult( MSG_VALUE_SIMULATOR_ADDR(), - from, + from, dataPtr, 0, 1, @@ -2042,13 +1997,13 @@ object "Bootloader" { } /// @dev Checks whether the current frame has enough gas - /// @dev It does not use 63/64 rule and should only be called before nearCalls. + /// @dev It does not use 63/64 rule and should only be called before nearCalls. function checkEnoughGas(gasToProvide) { debugLog("gas()", gas()) debugLog("gasToProvide", gasToProvide) // Using margin of CHECK_ENOUGH_GAS_OVERHEAD gas to make sure that the operation will indeed - // have enough gas + // have enough gas if lt(gas(), safeAdd(gasToProvide, CHECK_ENOUGH_GAS_OVERHEAD(), "cjq")) { revertWithReason(NOT_ENOUGH_GAS_PROVIDED_ERR_CODE(), 0) } @@ -2061,14 +2016,14 @@ object "Bootloader" { let l1GasPerPubdata := L1_GAS_PER_PUBDATA_BYTE() // Since the user specifies the amount of gas he is willing to pay for a *byte of pubdata*, - // we need to convert the number of L1 gas needed to process the batch into the equivalent number of + // we need to convert the number of L1 gas needed to process the batch into the equivalent number of // pubdata to pay for. // The difference between ceil and floor division here is negligible, // so we prefer doing the cheaper operation for the end user let pubdataEquivalentForL1Gas := safeDiv(l1GasOverhead, l1GasPerPubdata, "dd") - + ret := safeAdd( - computationOverhead, + computationOverhead, safeMul(gasPerPubdata, pubdataEquivalentForL1Gas, "aa"), "ab" ) @@ -2084,12 +2039,12 @@ object "Bootloader" { /// @param txEncodeLen The length of the ABI-encoding of the transaction /// @dev The % following 3 resources is taken into account when calculating the % of the batch's overhead to pay. /// 1. The % of the maximal gas per transaction. It is assumed that `MAX_GAS_PER_TRANSACTION` gas is enough to consume all - /// the single-instance circuits. Meaning that the transaction should pay at least txGasLimit/MAX_GAS_PER_TRANSACTION part + /// the single-instance circuits. Meaning that the transaction should pay at least txGasLimit/MAX_GAS_PER_TRANSACTION part /// of the overhead. /// 2. Overhead for taking up the bootloader memory. The bootloader memory has a cap on its length, mainly enforced to keep the RAM requirements /// for the node smaller. That is, the user needs to pay a share proportional to the length of the ABI encoding of the transaction. - /// 3. Overhead for taking up a slot for the transaction. Since each batch has the limited number of transactions in it, the user must pay - /// at least 1/MAX_TRANSACTIONS_IN_BLOCK part of the overhead. + /// 3. Overhead for taking up a slot for the transaction. Since each batch has the limited number of transactions in it, the user must pay + /// at least 1/MAX_TRANSACTIONS_IN_BATCH part of the overhead. function getTransactionUpfrontOverhead( txGasLimit, gasPerPubdataByte, @@ -2106,7 +2061,7 @@ object "Bootloader" { ret := max(ret, overheadForCircuits) debugLog("overheadForCircuits", overheadForCircuits) - + let overheadForLength := ceilDiv( safeMul(txEncodeLen, totalBatchOverhead, "ad"), BOOTLOADER_MEMORY_FOR_TXS() @@ -2114,17 +2069,17 @@ object "Bootloader" { ret := max(ret, overheadForLength) debugLog("overheadForLength", overheadForLength) - + let overheadForSlot := ceilDiv( totalBatchOverhead, MAX_TRANSACTIONS_IN_BATCH() ) ret := max(ret, overheadForSlot) debugLog("overheadForSlot", overheadForSlot) - + /// /// DEBUG SUPPORT START - /// + /// mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 13)), totalBatchOverhead) mstore(add(DEBUG_BEGIN_BYTE(), mul(32, 14)), overheadForCircuits) @@ -2133,16 +2088,16 @@ object "Bootloader" { /// /// DEBUG SUPPORT END - /// + /// // In the proved batch we ensure that the gasPerPubdataByte is not zero - // to avoid the potential edge case of division by zero. In Yul, division by + // to avoid the potential edge case of division by zero. In Yul, division by // zero does not panic, but returns zero. if and(iszero(gasPerPubdataByte), FORBID_ZERO_GAS_PER_PUBDATA()) { assertionError("zero gasPerPubdataByte") } - + } /// @dev A method where all panics in the nearCalls get to. @@ -2151,16 +2106,16 @@ object "Bootloader" { debugLog("ZKSYNC_CATCH_NEAR_CALL",0) setHook(VM_HOOK_CATCH_NEAR_CALL()) } - + /// @dev Prepends the selector before the txDataOffset, /// preparing it to be used to call either `verify` or `execute`. /// Returns the pointer to the calldata. /// Note, that this overrides 32 bytes before the current transaction: function prependSelector(txDataOffset, selector) -> ret { - + let calldataPtr := sub(txDataOffset, 4) - // Note, that since `mstore` stores 32 bytes at once, we need to - // actually store the selector in one word starting with the + // Note, that since `mstore` stores 32 bytes at once, we need to + // actually store the selector in one word starting with the // (txDataOffset - 32) = (calldataPtr - 28) mstore(sub(calldataPtr, 28), selector) @@ -2183,6 +2138,11 @@ object "Bootloader" { } } + /// @dev Returns constant that is equal to `keccak256("")` + function EMPTY_STRING_KECCAK() -> ret { + ret := 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 + } + /// @dev Returns whether x <= y function lte(x, y) -> ret { ret := or(lt(x,y), eq(x,y)) @@ -2213,7 +2173,8 @@ object "Bootloader" { ) } - // Currently only two versions are supported: 1 or 0, which basically + // This method returns AccountAbstractVersion enum. + // Currently only two versions are supported: 1 or 0, which basically // mean whether the contract is an account or not. if iszero(supportedVersion) { revertWithReason( @@ -2264,16 +2225,16 @@ object "Bootloader" { } /// @dev Used to call a method with the following signature; - /// someName( + /// someName( /// bytes32 _txHash, - /// bytes32 _suggestedSignedHash, + /// bytes32 _suggestedSignedHash, /// Transaction calldata _transaction /// ) - // Note, that this method expects that the current tx hashes are already stored + // Note, that this method expects that the current tx hashes are already stored // in the `CURRENT_L2_TX_HASHES` slots. function callAccountMethod(selector, account, txDataOffset) -> success { - // Safety invariant: it is safe to override data stored under - // `txDataOffset`, since the account methods are called only using + // Safety invariant: it is safe to override data stored under + // `txDataOffset`, since the account methods are called only using // `callAccountMethod` or `callPostOp` methods, both of which reformat // the contents before innerTxDataOffset (i.e. txDataOffset + 32 bytes), // i.e. make sure that the position at the txDataOffset has valid value. @@ -2292,7 +2253,7 @@ object "Bootloader" { mstore(add(txDataWithHashesOffset, 64), 96) let calldataPtr := prependSelector(txDataWithHashesOffset, selector) - let innerTxDataOffst := add(txDataOffset, 0x20) + let innerTxDataOffst := add(txDataOffset, 32) let len := getDataLength(innerTxDataOffst) @@ -2316,7 +2277,7 @@ object "Bootloader" { /// @dev Calculates and saves the explorer hash and the suggested signed hash for the transaction. function saveTxHashes(txDataOffset) { let calldataPtr := prependSelector(txDataOffset, {{GET_TX_HASHES_SELECTOR}}) - let innerTxDataOffst := add(txDataOffset, 0x20) + let innerTxDataOffst := add(txDataOffset, 32) let len := getDataLength(innerTxDataOffst) @@ -2353,7 +2314,7 @@ object "Bootloader" { /// @param paymaster The address of the paymaster /// @param txDataOffset The offset to the ABI-encoded Transaction struct. /// @param txResult The status of the transaction (1 if succeeded, 0 otherwise). - /// @param maxRefundedGas The maximum number of gas the bootloader can be refunded. + /// @param maxRefundedGas The maximum number of gas the bootloader can be refunded. /// This is the `maximum` number because it does not take into account the number of gas that /// can be spent by the paymaster itself. function ZKSYNC_NEAR_CALL_callPostOp(abi, paymaster, txDataOffset, txResult, maxRefundedGas) -> success { @@ -2375,13 +2336,13 @@ object "Bootloader" { // 6. _maxRefundedGas (32 bytes) // 7. _context (note, that the content must be padded to 32 bytes) // 8. _transaction - + let contextLen := mload(PAYMASTER_CONTEXT_BEGIN_BYTE()) let paddedContextLen := lengthRoundedByWords(contextLen) // The length of selector + the first 7 fields (with context len) + context itself. let preTxLen := add(228, paddedContextLen) - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let calldataPtr := sub(innerTxDataOffset, preTxLen) { @@ -2390,11 +2351,11 @@ object "Bootloader" { // Selector mstore(ptr, {{RIGHT_PADDED_POST_TRANSACTION_SELECTOR}}) ptr := add(ptr, 4) - + // context ptr mstore(ptr, 192) // The context always starts at 32 * 6 position ptr := add(ptr, 32) - + // transaction ptr mstore(ptr, sub(innerTxDataOffset, add(calldataPtr, 4))) ptr := add(ptr, 32) @@ -2419,18 +2380,18 @@ object "Bootloader" { memCopy(PAYMASTER_CONTEXT_BEGIN_BYTE(), ptr, add(32, paddedContextLen)) ptr := add(ptr, add(32, paddedContextLen)) - // At this point, the ptr should reach the innerTxDataOffset. + // At this point, the ptr should reach the innerTxDataOffset. // If not, we have done something wrong here. if iszero(eq(ptr, innerTxDataOffset)) { assertionError("postOp: ptr != innerTxDataOffset") } - + // no need to store the transaction as from the innerTxDataOffset starts // valid encoding of the transaction } let calldataLen := safeAdd(preTxLen, getDataLength(innerTxDataOffset), "jiq") - + success := call( gas(), paymaster, @@ -2452,7 +2413,7 @@ object "Bootloader" { let finalFrom := safeAdd(from, len, "cka") - for { } lt(from, finalFrom) { + for { } lt(from, finalFrom) { from := add(from, 32) to := add(to, 32) } { @@ -2465,7 +2426,7 @@ object "Bootloader" { /// this method also enforces that the nonce has been marked as used. function accountValidateTx(txDataOffset) { // Skipping the first 0x20 word of the ABI-encoding of the struct - let innerTxDataOffst := add(txDataOffset, 0x20) + let innerTxDataOffst := add(txDataOffset, 32) let from := getFrom(innerTxDataOffst) ensureAccount(from) @@ -2498,8 +2459,8 @@ object "Bootloader" { /// correct returndatasize function ensureCorrectAccountMagic() { // It is expected that the returned value is ABI-encoded bytes4 magic value - // The Solidity always pads such value to 32 bytes and so we expect the magic to be - // of length 32 + // The Solidity always pads such value to 32 bytes and so we expect the magic to be + // of length 32 if iszero(eq(32, returndatasize())) { revertWithReason( ACCOUNT_RETURNED_INVALID_MAGIC_ERR_CODE(), @@ -2509,9 +2470,9 @@ object "Bootloader" { // Note that it is important to copy the magic even though it is not needed if the // `SHOULD_ENSURE_CORRECT_RETURNED_MAGIC` is false. It is never false in production - // but it is so in fee estimation and we want to preserve as many operations as + // but it is so in fee estimation and we want to preserve as many operations as // in the original operation. - returndatacopy(0, 0, 0x20) + returndatacopy(0, 0, 32) let returnedValue := mload(0) let isMagicCorrect := eq(returnedValue, {{SUCCESSFUL_ACCOUNT_VALIDATION_MAGIC_VALUE}}) @@ -2523,13 +2484,13 @@ object "Bootloader" { } } - /// @dev Calls the KnownCodesStorage system contract to mark the factory dependencies of + /// @dev Calls the KnownCodesStorage system contract to mark the factory dependencies of /// the transaction as known. function markFactoryDepsForTx(innerTxDataOffset, isL1Tx) { debugLog("starting factory deps", 0) let factoryDepsPtr := getFactoryDepsPtr(innerTxDataOffset) let factoryDepsLength := mload(factoryDepsPtr) - + if gt(factoryDepsLength, MAX_NEW_FACTORY_DEPS()) { assertionError("too many factory deps") } @@ -2555,7 +2516,7 @@ object "Bootloader" { let arrayLengthBytes := safeAdd(32, safeMul(factoryDepsLength, 32, "ag"), "af") // Copying factory deps array memCopy(factoryDepsPtr, ptr, arrayLengthBytes) - + let success := call( gas(), KNOWN_CODES_CONTRACT_ADDR(), @@ -2572,7 +2533,7 @@ object "Bootloader" { if iszero(success) { debugReturndata() - switch isL1Tx + switch isL1Tx case 1 { revertWithReason( FAILED_TO_MARK_FACTORY_DEPS(), @@ -2593,7 +2554,7 @@ object "Bootloader" { let value := getValue(innerTxDataOffset) debugLog("value", value) let dataPtr := getDataPtr(innerTxDataOffset) - + let dataLength := mload(dataPtr) let data := add(dataPtr, 32) @@ -2609,11 +2570,11 @@ object "Bootloader" { } } - /// @dev Function responsible for the execution of the L2 transaction + /// @dev Function responsible for the execution of the L2 transaction /// @dev Returns `true` or `false` depending on whether or not the tx has reverted. function executeL2Tx(txDataOffset, from) -> ret { ret := callAccountMethod({{EXECUTE_TX_SELECTOR}}, from, txDataOffset) - + if iszero(ret) { debugReturndata() } @@ -2623,12 +2584,12 @@ object "Bootloader" { /// zkSync-specific utilities: /// - /// @dev Returns an ABI that can be used for low-level + /// @dev Returns an ABI that can be used for low-level /// invocations of calls and mimicCalls /// @param dataPtr The pointer to the calldata. /// @param gasPassed The number of gas to be passed with the call. /// @param shardId The shard id of the callee. Currently only `0` (Rollup) is supported. - /// @param forwardingMode The mode of how the calldata is forwarded + /// @param forwardingMode The mode of how the calldata is forwarded /// It is possible to either pass a pointer, slice of auxheap or heap. For the /// bootloader purposes using heap (0) is enough. /// @param isConstructorCall Whether the call should contain the isConstructor flag. @@ -2642,7 +2603,7 @@ object "Bootloader" { isConstructorCall, isSystemCall ) -> ret { - let dataStart := add(dataPtr, 0x20) + let dataStart := add(dataPtr, 32) let dataLength := mload(dataPtr) // Skip dataOffset and memoryPage, because they are always zeros @@ -2686,9 +2647,9 @@ object "Bootloader" { isSystemCall ) - ret := verbatim_7i_1o("system_mimic_call", to, whoToMimic, farCallAbi, extraAbi1, extraAbi2, extraAbi3, 0) + ret := verbatim_7i_1o("system_mimic_call", to, whoToMimic, farCallAbi, extraAbi1, extraAbi2, extraAbi3, 0) } - + // Extracts the required byte from the 32-byte word. // 31 would mean the MSB, 0 would mean LSB. @@ -2701,17 +2662,122 @@ object "Bootloader" { - /// @dev Sends an L2->L1 log. + /// @dev Sends a L2->L1 log using L1Messengers' `sendL2ToL1Log`. /// @param isService The isService flag of the call. /// @param key The `key` parameter of the log. /// @param value The `value` parameter of the log. - function sendToL1(isService, key, value) { + function sendL2LogUsingL1Messenger(isService, key, value) { + mstore(0, {{RIGHT_PADDED_SEND_L2_TO_L1_LOG_SELECTOR}}) + mstore(4, isService) + mstore(36, key) + mstore(68, value) + + let success := call( + gas(), + L1_MESSENGER_ADDR(), + 0, + 0, + 100, + 0, + 0 + ) + + if iszero(success) { + debugLog("Failed to send L1Messenger L2Log", key) + debugLog("Failed to send L1Messenger L2Log", value) + + revertWithReason(L1_MESSENGER_LOG_SENDING_FAILED_ERR_CODE(), 1) + } + } + + /// @dev Sends a native (VM) L2->L1 log. + /// @param isService The isService flag of the call. + /// @param key The `key` parameter of the log. + /// @param value The `value` parameter of the log. + function sendToL1Native(isService, key, value) { verbatim_3i_0o("to_l1", isService, key, value) - } - + } + + /// @notice Performs L1 Messenger pubdata "publishing" call. + /// @dev Expected to be used at the end of the batch. + function l1MessengerPublishingCall() { + let ptr := OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_BEGIN_BYTE() + debugLog("Publishing batch data to L1", 0) + // First slot (only last 4 bytes) -- selector + mstore(ptr, {{PUBLISH_PUBDATA_SELECTOR}}) + // Second slot -- offset + mstore(add(ptr, 32), 32) + setHook(VM_HOOK_PUBDATA_REQUESTED()) + // Third slot -- length of pubdata + let len := mload(add(ptr, 64)) + // 4 bytes for selector, 32 bytes for array offset and 32 bytes for array length + let fullLen := add(len, 68) + + // ptr + 28 because the function selector only takes up the last 4 bytes in the first slot. + let success := call( + gas(), + L1_MESSENGER_ADDR(), + 0, + add(ptr, 28), + fullLen, + 0, + 0 + ) + + if iszero(success) { + debugLog("Failed to publish L2Logs data", 0) + + revertWithReason(L1_MESSENGER_PUBLISHING_FAILED_ERR_CODE(), 1) + } + } + + function publishTimestampDataToL1() { + debugLog("Publishing timestamp data to L1", 0) + + mstore(0, {{RIGHT_PADDED_PUBLISH_TIMESTAMP_DATA_TO_L1_SELECTOR}}) + let success := call( + gas(), + SYSTEM_CONTEXT_ADDR(), + 0, + 0, + 4, + 0, + 0 + ) + + if iszero(success) { + debugLog("Failed publish timestamp to L1", 0) + revertWithReason(FAILED_TO_PUBLISH_TIMESTAMP_DATA_TO_L1(), 1) + } + } + + /// @notice Performs a call of a System Context + /// method that have no input parameters + function callSystemContext(paddedSelector) { + mstore(0, paddedSelector) + + let success := call( + gas(), + SYSTEM_CONTEXT_ADDR(), + 0, + 0, + 4, + 0, + 0 + ) + + if iszero(success) { + debugLog("Failed to call System Context", 0) + + revertWithReason(FAILED_TO_CALL_SYSTEM_CONTEXT_ERR_CODE(), 1) + } + } + /// @dev Increment the number of txs in the batch function considerNewTx() { verbatim_0i_0o("increment_tx_counter") + + callSystemContext({{RIGHT_PADDED_INCREMENT_TX_NUMBER_IN_BLOCK_SELECTOR}}) } /// @dev Set the new price per pubdata byte @@ -2724,7 +2790,7 @@ object "Bootloader" { let success := setContextVal({{RIGHT_PADDED_SET_TX_ORIGIN}}, newTxOrigin) if iszero(success) { - debugLog("Failed to set txOrigin", newTxOrigin) + debugLog("Failed to set txOrigin", newTxOrigin) nearCallPanic() } } @@ -2811,10 +2877,10 @@ object "Bootloader" { } } - /// @notice Appends the transaction hash to the current L2 block. + /// @notice Appends the transaction hash to the current L2 block. /// @param txHash The hash of the transaction to append. /// @param isL1Tx Whether the transaction is an L1 transaction. If it is an L1 transaction, - /// and this method fails, then the bootloader execution will be explicitly reverted. + /// and this method fails, then the bootloader execution will be explicitly reverted. /// Otherwise, the nearCallPanic will be used to implicitly fail the validation of the transaction. function appendTransactionHash( txHash, @@ -2845,36 +2911,16 @@ object "Bootloader" { ) } default { - // For L2 transactions, we use near call panic, it will triger the validation - // step of the transaction to fail, returning a consistent error message. + // For L2 transactions, we use near call panic, it will triger the validation + // step of the transaction to fail, returning a consistent error message. nearCallPanic() } } - } - - function publishBatchDataToL1() { - debugLog("Publishing batch data to L1", 0) - - mstore(0, {{RIGHT_PADDED_PUBLISH_BATCH_DATA_TO_L1_SELECTOR}}) - let success := call( - gas(), - SYSTEM_CONTEXT_ADDR(), - 0, - 0, - 4, - 0, - 0 - ) - - if iszero(success) { - debugLog("Failed publish batch data to L1", 0) - revertWithReason(FAILED_TO_PUBLISH_BATCH_DATA_TO_L1(), 1) - } } /// @notice Arbitrarily overrides the current batch information. - /// @dev It should NOT be available in the proved batch. + /// @dev It should NOT be available in the proved batch. function unsafeOverrideBatch(newTimestamp, newBatchNumber, baseFee) { mstore(0, {{RIGHT_PADDED_OVERRIDE_BATCH_SELECTOR}}) mstore(4, newTimestamp) @@ -2901,7 +2947,7 @@ object "Bootloader" { - // Checks whether the nonce `nonce` have been already used for + // Checks whether the nonce `nonce` have been already used for // account `from`. Reverts if the nonce has not been used properly. function ensureNonceUsage(from, nonce, shouldNonceBeUsed) { // INonceHolder.validateNonceUsage selector @@ -2957,15 +3003,15 @@ object "Bootloader" { // uint256 from; // // The callee. // uint256 to; - // // The gasLimit to pass with the transaction. + // // The gasLimit to pass with the transaction. // // It has the same meaning as Ethereum's gasLimit. // uint256 gasLimit; // // The maximum amount of gas the user is willing to pay for a byte of pubdata. // uint256 gasPerPubdataByteLimit; - // // The maximum fee per gas that the user is willing to pay. + // // The maximum fee per gas that the user is willing to pay. // // It is akin to EIP1559's maxFeePerGas. // uint256 maxFeePerGas; - // // The maximum priority fee per gas that the user is willing to pay. + // // The maximum priority fee per gas that the user is willing to pay. // // It is akin to EIP1559's maxPriorityFeePerGas. // uint256 maxPriorityFeePerGas; // // The transaction's paymaster. If there is no paymaster, it is equal to 0. @@ -2998,15 +3044,15 @@ object "Bootloader" { // bytes reservedDynamic; // } - /// @notice Asserts the equality of two values and reverts + /// @notice Asserts the equality of two values and reverts /// with the appropriate error message in case it doesn't hold /// @param value1 The first value of the assertion /// @param value2 The second value of the assertion /// @param message The error message function assertEq(value1, value2, message) { - switch eq(value1, value2) + switch eq(value1, value2) case 0 { assertionError(message) } - default { } + default { } } /// @notice Makes sure that the structure of the transaction is set in accordance to its type @@ -3018,23 +3064,34 @@ object "Bootloader" { if gt(reservedDynamicLength, 0) { assertionError("non-empty reservedDynamic") } - let txType := getTxType(innerTxDataOffset) switch txType case 0 { let maxFeePerGas := getMaxFeePerGas(innerTxDataOffset) let maxPriorityFeePerGas := getMaxPriorityFeePerGas(innerTxDataOffset) assertEq(maxFeePerGas, maxPriorityFeePerGas, "EIP1559 params wrong") - - // Here, for type 0 transactions the reserved0 field is used as a marker + + + + let from := getFrom(innerTxDataOffset) + let iseoa := isEOA(from) + + assertEq(iseoa, true, "Only EIP-712 can use non-EOA") + + + + + // Here, for type 0 transactions the reserved0 field is used as a marker // whether the transaction should include chainId in its encoding. assertEq(lte(getGasPerPubdataByteLimit(innerTxDataOffset), MAX_L2_GAS_PER_PUBDATA()), 1, "Gas per pubdata is wrong") assertEq(getPaymaster(innerTxDataOffset), 0, "paymaster non zero") + assertEq(gt(getFrom(innerTxDataOffset), MAX_SYSTEM_CONTRACT_ADDR()), 1, "from in kernel space") - + + assertEq(getReserved1(innerTxDataOffset), 0, "reserved1 non zero") assertEq(getReserved2(innerTxDataOffset), 0, "reserved2 non zero") assertEq(getReserved3(innerTxDataOffset), 0, "reserved3 non zero") @@ -3046,13 +3103,25 @@ object "Bootloader" { let maxPriorityFeePerGas := getMaxPriorityFeePerGas(innerTxDataOffset) assertEq(maxFeePerGas, maxPriorityFeePerGas, "EIP1559 params wrong") + + + let from := getFrom(innerTxDataOffset) + let iseoa := isEOA(from) + + assertEq(iseoa, true, "Only EIP-712 can use non-EOA") + + + + assertEq(lte(getGasPerPubdataByteLimit(innerTxDataOffset), MAX_L2_GAS_PER_PUBDATA()), 1, "Gas per pubdata is wrong") assertEq(getPaymaster(innerTxDataOffset), 0, "paymaster non zero") + assertEq(gt(getFrom(innerTxDataOffset), MAX_SYSTEM_CONTRACT_ADDR()), 1, "from in kernel space") - + + assertEq(getReserved0(innerTxDataOffset), 0, "reserved0 non zero") assertEq(getReserved1(innerTxDataOffset), 0, "reserved1 non zero") assertEq(getReserved2(innerTxDataOffset), 0, "reserved2 non zero") @@ -3064,10 +3133,23 @@ object "Bootloader" { assertEq(lte(getGasPerPubdataByteLimit(innerTxDataOffset), MAX_L2_GAS_PER_PUBDATA()), 1, "Gas per pubdata is wrong") assertEq(getPaymaster(innerTxDataOffset), 0, "paymaster non zero") + + + let from := getFrom(innerTxDataOffset) + let iseoa := isEOA(from) + + assertEq(iseoa, true, "Only EIP-712 can use non-EOA") + + + + + + assertEq(gt(getFrom(innerTxDataOffset), MAX_SYSTEM_CONTRACT_ADDR()), 1, "from in kernel space") - + + assertEq(getReserved0(innerTxDataOffset), 0, "reserved0 non zero") assertEq(getReserved1(innerTxDataOffset), 0, "reserved1 non zero") assertEq(getReserved2(innerTxDataOffset), 0, "reserved2 non zero") @@ -3075,12 +3157,20 @@ object "Bootloader" { assertEq(getFactoryDepsBytesLength(innerTxDataOffset), 0, "factory deps non zero") assertEq(getPaymasterInputBytesLength(innerTxDataOffset), 0, "paymasterInput non zero") } - case 113 { + case 113 { let paymaster := getPaymaster(innerTxDataOffset) assertEq(or(gt(paymaster, MAX_SYSTEM_CONTRACT_ADDR()), iszero(paymaster)), 1, "paymaster in kernel space") + + if iszero(paymaster) { + // Double checking that the paymasterInput is 0 if the paymaster is 0 + assertEq(getPaymasterInputBytesLength(innerTxDataOffset), 0, "paymasterInput non zero") + } + + assertEq(gt(getFrom(innerTxDataOffset), MAX_SYSTEM_CONTRACT_ADDR()), 1, "from in kernel space") + assertEq(getReserved0(innerTxDataOffset), 0, "reserved0 non zero") assertEq(getReserved1(innerTxDataOffset), 0, "reserved1 non zero") assertEq(getReserved2(innerTxDataOffset), 0, "reserved2 non zero") @@ -3090,149 +3180,151 @@ object "Bootloader" { // Upgrade transaction, no need to validate as it is validated on L1. } case 255 { - // L1 transaction, no need to validate as it is validated on L1. + // Double-check that the operator doesn't try to do an upgrade transaction via L1 -> L2 transaction. + assertEq(gt(getFrom(innerTxDataOffset), MAX_SYSTEM_CONTRACT_ADDR()), 1, "from in kernel space") + // L1 transaction, no need to validate as it is validated on L1. } default { assertionError("Unknown tx type") } } - /// + /// /// TransactionData utilities - /// + /// /// @dev The next methods are programmatically generated /// function getTxType(innerTxDataOffset) -> ret { ret := mload(innerTxDataOffset) } - + function getFrom(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 32)) } - + function getTo(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 64)) } - + function getGasLimit(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 96)) } - + function getGasPerPubdataByteLimit(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 128)) } - + function getMaxFeePerGas(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 160)) } - + function getMaxPriorityFeePerGas(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 192)) } - + function getPaymaster(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 224)) } - + function getNonce(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 256)) } - + function getValue(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 288)) } - + function getReserved0(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 320)) } - + function getReserved1(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 352)) } - + function getReserved2(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 384)) } - + function getReserved3(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 416)) } - + function getDataPtr(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 448)) ret := add(innerTxDataOffset, ret) } - + function getDataBytesLength(innerTxDataOffset) -> ret { let ptr := getDataPtr(innerTxDataOffset) ret := lengthRoundedByWords(mload(ptr)) } - + function getSignaturePtr(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 480)) ret := add(innerTxDataOffset, ret) } - + function getSignatureBytesLength(innerTxDataOffset) -> ret { let ptr := getSignaturePtr(innerTxDataOffset) ret := lengthRoundedByWords(mload(ptr)) } - + function getFactoryDepsPtr(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 512)) ret := add(innerTxDataOffset, ret) } - + function getFactoryDepsBytesLength(innerTxDataOffset) -> ret { let ptr := getFactoryDepsPtr(innerTxDataOffset) ret := safeMul(mload(ptr),32, "fwop") } - + function getPaymasterInputPtr(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 544)) ret := add(innerTxDataOffset, ret) } - + function getPaymasterInputBytesLength(innerTxDataOffset) -> ret { let ptr := getPaymasterInputPtr(innerTxDataOffset) ret := lengthRoundedByWords(mload(ptr)) } - + function getReservedDynamicPtr(innerTxDataOffset) -> ret { ret := mload(add(innerTxDataOffset, 576)) ret := add(innerTxDataOffset, ret) } - + function getReservedDynamicBytesLength(innerTxDataOffset) -> ret { let ptr := getReservedDynamicPtr(innerTxDataOffset) ret := lengthRoundedByWords(mload(ptr)) } - + /// This method checks that the transaction's structure is correct /// and tightly packed function validateAbiEncoding(txDataOffset) -> ret { - if iszero(eq(mload(txDataOffset), 0x20)) { + if iszero(eq(mload(txDataOffset), 32)) { assertionError("Encoding offset") } - let innerTxDataOffset := add(txDataOffset, 0x20) + let innerTxDataOffset := add(txDataOffset, 32) let fromValue := getFrom(innerTxDataOffset) if iszero(validateAddress(fromValue)) { assertionError("Encoding from") } - + let toValue := getTo(innerTxDataOffset) if iszero(validateAddress(toValue)) { assertionError("Encoding to") } - + let gasLimitValue := getGasLimit(innerTxDataOffset) if iszero(validateUint32(gasLimitValue)) { assertionError("Encoding gasLimit") } - + let gasPerPubdataByteLimitValue := getGasPerPubdataByteLimit(innerTxDataOffset) if iszero(validateUint32(gasPerPubdataByteLimitValue)) { assertionError("Encoding gasPerPubdataByteLimit") @@ -3247,26 +3339,26 @@ object "Bootloader" { if iszero(validateUint128(maxPriorityFeePerGas)) { assertionError("Encoding maxPriorityFeePerGas") } - + let paymasterValue := getPaymaster(innerTxDataOffset) if iszero(validateAddress(paymasterValue)) { assertionError("Encoding paymaster") } let expectedDynamicLenPtr := add(innerTxDataOffset, 608) - + let dataLengthPos := getDataPtr(innerTxDataOffset) if iszero(eq(dataLengthPos, expectedDynamicLenPtr)) { assertionError("Encoding data") } expectedDynamicLenPtr := validateBytes(dataLengthPos) - + let signatureLengthPos := getSignaturePtr(innerTxDataOffset) if iszero(eq(signatureLengthPos, expectedDynamicLenPtr)) { assertionError("Encoding signature") } expectedDynamicLenPtr := validateBytes(signatureLengthPos) - + let factoryDepsLengthPos := getFactoryDepsPtr(innerTxDataOffset) if iszero(eq(factoryDepsLengthPos, expectedDynamicLenPtr)) { assertionError("Encoding factoryDeps") @@ -3294,17 +3386,17 @@ object "Bootloader" { // in bytes. ret := 768 - ret := safeAdd(ret, getDataBytesLength(innerTxDataOffset), "asx") + ret := safeAdd(ret, getDataBytesLength(innerTxDataOffset), "asx") ret := safeAdd(ret, getSignatureBytesLength(innerTxDataOffset), "qwqa") ret := safeAdd(ret, getFactoryDepsBytesLength(innerTxDataOffset), "sic") ret := safeAdd(ret, getPaymasterInputBytesLength(innerTxDataOffset), "tpiw") ret := safeAdd(ret, getReservedDynamicBytesLength(innerTxDataOffset), "shy") } - /// + /// /// End of programmatically generated code /// - + /// @dev Accepts an address and returns whether or not it is /// a valid address function validateAddress(addr) -> ret { @@ -3336,14 +3428,14 @@ object "Bootloader" { let lastWordBytes := mod(length, 32) switch lastWordBytes - case 0 { - // If the length is divisible by 32, then + case 0 { + // If the length is divisible by 32, then // the bytes occupy whole words, so there is // nothing to validate - bytesEnd := safeAdd(bytesPtr, safeAdd(length, 32, "pol"), "aop") + bytesEnd := safeAdd(bytesPtr, safeAdd(length, 32, "pol"), "aop") } default { - // If the length is not divisible by 32, then + // If the length is not divisible by 32, then // the last word is padded with zeroes, i.e. // the last 32 - `lastWordBytes` bytes must be zeroes // The easiest way to check this is to use AND operator @@ -3365,8 +3457,8 @@ object "Bootloader" { } } - /// @dev Accepts the pointer to the bytes32[] array length and - /// returns the pointer right after the array's content + /// @dev Accepts the pointer to the bytes32[] array length and + /// returns the pointer right after the array's content function validateBytes32Array(arrayPtr) -> arrayEnd { // The bytes32[] array takes full words which may contain any content. // Thus, there is nothing to validate. @@ -3409,7 +3501,7 @@ object "Bootloader" { } } - /// @dev Returns the addition of two unsigned integers, reverting on overflow. + /// @dev Returns the subtraction of two unsigned integers, reverting on underflow. function safeSub(x, y, errMsg) -> ret { if gt(y, x) { assertionError(errMsg) @@ -3422,7 +3514,7 @@ object "Bootloader" { /// /// @notice A method used to prevent optimization of x by the compiler - /// @dev This method is only used for logging purposes + /// @dev This method is only used for logging purposes function nonOptimized(x) -> ret { // value() is always 0 in bootloader context. ret := add(mul(callvalue(),x),x) @@ -3439,7 +3531,7 @@ object "Bootloader" { /// @dev Triggers a hook that displays the returndata on the server side. function debugReturndata() { debugLog("returndataptr", returnDataPtr()) - storeVmHookParam(0, returnDataPtr()) + storeVmHookParam(0, returnDataPtr()) setHook(VM_HOOK_DEBUG_RETURNDATA()) } @@ -3447,7 +3539,7 @@ object "Bootloader" { /// refunded to the user. This is to be used by the operator to derive the correct /// `gasUsed` in the API. function notifyAboutRefund(refund) { - storeVmHookParam(0, nonOptimized(refund)) + storeVmHookParam(0, nonOptimized(refund)) setHook(VM_NOTIFY_OPERATOR_ABOUT_FINAL_REFUND()) debugLog("refund(gas)", refund) } @@ -3463,23 +3555,23 @@ object "Bootloader" { } /// @dev Asks operator for the refund for the transaction. The function provides - /// the operator with the leftover gas found by the bootloader. + /// the operator with the leftover gas found by the bootloader. /// This function is called before the refund stage, because at that point /// only the operator knows how close does a transaction - /// bring us to closing the batch as well as how much the transaction + /// bring us to closing the batch as well as how much the transaction /// should've spent on the pubdata/computation/etc. /// After it is run, the operator should put the expected refund /// into the memory slot (in the out of circuit execution). /// Since the slot after the transaction is not touched, /// this slot can be used in the in-circuit VM out of box. function askOperatorForRefund(gasLeft) { - storeVmHookParam(0, nonOptimized(gasLeft)) + storeVmHookParam(0, nonOptimized(gasLeft)) setHook(VM_HOOK_ASK_OPERATOR_FOR_REFUND()) } - - /// + + /// /// Error codes used for more correct diagnostics from the server side. - /// + /// function ETH_CALL_ERR_CODE() -> ret { ret := 0 @@ -3585,22 +3677,34 @@ object "Bootloader" { ret := 25 } - function FAILED_TO_PUBLISH_BATCH_DATA_TO_L1() -> ret { + function FAILED_TO_PUBLISH_TIMESTAMP_DATA_TO_L1() -> ret { ret := 26 } + function L1_MESSENGER_PUBLISHING_FAILED_ERR_CODE() -> ret { + ret := 27 + } + + function L1_MESSENGER_LOG_SENDING_FAILED_ERR_CODE() -> ret { + ret := 28 + } + + function FAILED_TO_CALL_SYSTEM_CONTEXT_ERR_CODE() -> ret { + ret := 29 + } + /// @dev Accepts a 1-word literal and returns its length in bytes /// @param str A string literal function getStrLen(str) -> len { len := 0 - // The string literals are stored left-aligned. Thus, + // The string literals are stored left-aligned. Thus, // In order to get the length of such string, - // we shift it to the left (remove one byte to the left) until + // we shift it to the left (remove one byte to the left) until // no more non-empty bytes are left. for {} str {str := shl(8, str)} { len := add(len, 1) } - } + } // Selector of the errors used by the "require" statements in Solidity // and the one that can be parsed by our server. @@ -3616,19 +3720,19 @@ object "Bootloader" { mstore8(ptr, ASSERTION_ERROR()) ptr := add(ptr, 1) - // Then, we need to put the returndata in a way that is easily parsable by our + // Then, we need to put the returndata in a way that is easily parsable by our // servers mstore(ptr, GENERAL_ERROR_SELECTOR()) ptr := add(ptr, 4) - + // Then, goes the "data offset". It is has constant value of 32. mstore(ptr, 32) ptr := add(ptr, 32) - + // Then, goes the length of the string: mstore(ptr, getStrLen(err)) ptr := add(ptr, 32) - + // Then, we put the actual string mstore(ptr, err) ptr := add(ptr, 32) @@ -3638,8 +3742,8 @@ object "Bootloader" { /// @notice Accepts an error code and whether there is a need to copy returndata /// @param errCode The code of the error - /// @param sendReturnData A flag of whether or not the returndata should be used in the - /// revert reason as well. + /// @param sendReturnData A flag of whether or not the returndata should be used in the + /// revert reason as well. function revertWithReason(errCode, sendReturnData) { let returndataLen := 1 mstore8(0, errCode) @@ -3653,8 +3757,8 @@ object "Bootloader" { revert(0, returndataLen) } - /// @notice The id of the VM hook that notifies the operator that the transaction - /// validation rules should start applying (i.e. the user should not be allowed to access + /// @notice The id of the VM hook that notifies the operator that the transaction + /// validation rules should start applying (i.e. the user should not be allowed to access /// other users' storage, etc). function VM_HOOK_ACCOUNT_VALIDATION_ENTERED() -> ret { ret := 0 @@ -3666,14 +3770,14 @@ object "Bootloader" { ret := 1 } - /// @notice The id of the VM hook that notifies the operator that the transaction's validation - /// restrictions should no longer apply. Note, that this is different from the validation ending, + /// @notice The id of the VM hook that notifies the operator that the transaction's validation + /// restrictions should no longer apply. Note, that this is different from the validation ending, /// since for instance the bootloader needs to do some actions during validation which are forbidden for users. /// So this hook is used to notify the operator that the restrictions should be temporarily lifted. function VM_HOOK_NO_VALIDATION_ENTERED() -> ret { ret := 2 } - + /// @notice The id of the VM hook that notifies the operator that the transaction's validation has ended. function VM_HOOK_VALIDATION_STEP_ENDED() -> ret { ret := 3 @@ -3699,8 +3803,8 @@ object "Bootloader" { function VM_HOOK_CATCH_NEAR_CALL() -> ret { ret := 7 } - - /// @notice The id of the VM hook that is used to notify the operator about the need to put the refund for + + /// @notice The id of the VM hook that is used to notify the operator about the need to put the refund for /// the current transaction into the bootloader's memory. function VM_HOOK_ASK_OPERATOR_FOR_REFUND() -> ret { ret := 8 @@ -3722,17 +3826,22 @@ object "Bootloader" { ret := 11 } - // Need to prevent the compiler from optimizing out similar operations, - // which may have different meaning for the offline debugging + /// @norice The id of the VM hook that use used to notify the operator that it needs to insert the pubdata. + function VM_HOOK_PUBDATA_REQUESTED() -> ret { + ret := 12 + } + + // Need to prevent the compiler from optimizing out similar operations, + // which may have different meaning for the offline debugging function unoptimized(val) -> ret { ret := add(val, callvalue()) } - /// @notice Triggers a VM hook. + /// @notice Triggers a VM hook. /// The server will recognize it and output corresponding logs. function setHook(hook) { mstore(VM_HOOK_PTR(), unoptimized(hook)) - } + } /// @notice Sets a value to a param of the vm hook. /// @param paramId The id of the VmHook parameter. @@ -3744,6 +3853,228 @@ object "Bootloader" { let offset := add(VM_HOOK_PARAMS_OFFSET(), mul(32, paramId)) mstore(offset, unoptimized(value)) } + + /// @dev Log key used by Executor.sol for processing. See Constants.sol::SystemLogKey enum + function chainedPriorityTxnHashLogKey() -> ret { + ret := 5 + } + + /// @dev Log key used by Executor.sol for processing. See Constants.sol::SystemLogKey enum + function numberOfLayer1TxsLogKey() -> ret { + ret := 6 + } + + /// @dev Log key used by Executor.sol for processing. See Constants.sol::SystemLogKey enum + function protocolUpgradeTxHashKey() -> ret { + ret := 7 + } + + //////////////////////////////////////////////////////////////////////////// + // Main Transaction Processing + //////////////////////////////////////////////////////////////////////////// + + /// @notice the address that will be the beneficiary of all the fees + let OPERATOR_ADDRESS := mload(0) + + let GAS_PRICE_PER_PUBDATA := 0 + + // Initializing block params + { + /// @notice The hash of the previous batch + let PREV_BATCH_HASH := mload(32) + /// @notice The timestamp of the batch being processed + let NEW_BATCH_TIMESTAMP := mload(64) + /// @notice The number of the new batch being processed. + /// While this number is deterministic for each batch, we + /// still provide it here to ensure consistency between the state + /// of the VM and the state of the operator. + let NEW_BATCH_NUMBER := mload(96) + + /// @notice The gas price on L1 for ETH. In the future, a trustless value will be enforced. + /// For now, this value is trusted to be fairly provided by the operator. + let L1_GAS_PRICE := mload(128) + + /// @notice The minimal gas price that the operator agrees upon. + /// In the future, it will have an EIP1559-like lower bound. + let FAIR_L2_GAS_PRICE := mload(160) + + /// @notice The expected base fee by the operator. + /// Just like the batch number, while calculated on the bootloader side, + /// the operator still provides it to make sure that its data is in sync. + let EXPECTED_BASE_FEE := mload(192) + + validateOperatorProvidedPrices(L1_GAS_PRICE, FAIR_L2_GAS_PRICE) + + let baseFee := 0 + + + + // This implementation of the bootloader relies on the correct version of the SystemContext + // and it can not be upgraded via a standard upgrade transaction, but needs to ensure + // correctness itself before any transaction is executed. + upgradeSystemContextIfNeeded() + + // Only for the proved batch we enforce that the baseFee proposed + // by the operator is equal to the expected one. For the playground batch, we allow + // the operator to provide any baseFee the operator wants. + baseFee, GAS_PRICE_PER_PUBDATA := getBaseFee(L1_GAS_PRICE, FAIR_L2_GAS_PRICE) + if iszero(eq(baseFee, EXPECTED_BASE_FEE)) { + debugLog("baseFee", baseFee) + debugLog("EXPECTED_BASE_FEE", EXPECTED_BASE_FEE) + assertionError("baseFee inconsistent") + } + + setNewBatch(PREV_BATCH_HASH, NEW_BATCH_TIMESTAMP, NEW_BATCH_NUMBER, EXPECTED_BASE_FEE) + + + + + + baseFee, GAS_PRICE_PER_PUBDATA := getBaseFee(L1_GAS_PRICE, FAIR_L2_GAS_PRICE) + + let SHOULD_SET_NEW_BATCH := mload(224) + + upgradeSystemContextIfNeeded() + + switch SHOULD_SET_NEW_BATCH + case 0 { + unsafeOverrideBatch(NEW_BATCH_TIMESTAMP, NEW_BATCH_NUMBER, EXPECTED_BASE_FEE) + } + default { + setNewBatch(PREV_BATCH_HASH, NEW_BATCH_TIMESTAMP, NEW_BATCH_NUMBER, EXPECTED_BASE_FEE) + } + + + } + + // Now, we iterate over all transactions, processing each of them + // one by one. + // Here, the `resultPtr` is the pointer to the memory slot, where we will write + // `true` or `false` based on whether the tx execution was successful, + + // The position at which the tx offset of the transaction should be placed + let currentExpectedTxOffset := add(TXS_IN_BATCH_LAST_PTR(), mul(MAX_POSTOP_SLOTS(), 32)) + + let txPtr := TX_DESCRIPTION_BEGIN_BYTE() + + // At the COMPRESSED_BYTECODES_BEGIN_BYTE() the pointer to the newest bytecode to be published + // is stored. + mstore(COMPRESSED_BYTECODES_BEGIN_BYTE(), add(COMPRESSED_BYTECODES_BEGIN_BYTE(), 32)) + + // At start storing keccak256("") as `chainedPriorityTxsHash` and 0 as `numberOfLayer1Txs` + mstore(PRIORITY_TXS_L1_DATA_BEGIN_BYTE(), EMPTY_STRING_KECCAK()) + mstore(add(PRIORITY_TXS_L1_DATA_BEGIN_BYTE(), 32), 0) + + // Iterating through transaction descriptions + let transactionIndex := 0 + for { + let resultPtr := RESULT_START_PTR() + } lt(txPtr, TXS_IN_BATCH_LAST_PTR()) { + txPtr := add(txPtr, TX_DESCRIPTION_SIZE()) + resultPtr := add(resultPtr, 32) + transactionIndex := add(transactionIndex, 1) + } { + let execute := mload(txPtr) + + debugLog("txPtr", txPtr) + debugLog("execute", execute) + + if iszero(execute) { + // We expect that all transactions that are executed + // are continuous in the array. + break + } + + let txDataOffset := mload(add(txPtr, 32)) + + // We strongly enforce the positions of transactions + if iszero(eq(currentExpectedTxOffset, txDataOffset)) { + debugLog("currentExpectedTxOffset", currentExpectedTxOffset) + debugLog("txDataOffset", txDataOffset) + + assertionError("Tx data offset is incorrect") + } + + currentExpectedTxOffset := validateAbiEncoding(txDataOffset) + + // Checking whether the last slot of the transaction's description + // does not go out of bounds. + if gt(sub(currentExpectedTxOffset, 32), LAST_FREE_SLOT()) { + debugLog("currentExpectedTxOffset", currentExpectedTxOffset) + debugLog("LAST_FREE_SLOT", LAST_FREE_SLOT()) + + assertionError("currentExpectedTxOffset too high") + } + + validateTypedTxStructure(add(txDataOffset, 32)) + + + { + debugLog("ethCall", 0) + processTx(txDataOffset, resultPtr, transactionIndex, 0, GAS_PRICE_PER_PUBDATA) + } + + + { + let txMeta := mload(txPtr) + let processFlags := getWordByte(txMeta, 31) + debugLog("flags", processFlags) + + + // `processFlags` argument denotes which parts of execution should be done: + // Possible values: + // 0x00: validate & execute (normal mode) + // 0x02: perform ethCall (i.e. use mimicCall to simulate the call) + + let isETHCall := eq(processFlags, 0x02) + debugLog("ethCall", isETHCall) + processTx(txDataOffset, resultPtr, transactionIndex, isETHCall, GAS_PRICE_PER_PUBDATA) + } + + // Signal to the vm that the transaction execution is complete + setHook(VM_HOOK_TX_HAS_ENDED()) + // Increment tx index within the system. + considerNewTx() + } + + // The bootloader doesn't have to pay anything + setPricePerPubdataByte(0) + + // Resetting tx.origin and gasPrice to 0, so we don't pay for + // publishing them on-chain. + setTxOrigin(0) + setGasPrice(0) + + // Transfering all the ETH received in the block to the operator + directETHTransfer( + selfbalance(), + OPERATOR_ADDRESS + ) + + // Hook that notifies that the operator should provide final information for the batch + setHook(VM_HOOK_FINAL_L2_STATE_INFO()) + + // Each batch typically ends with a special block which contains no transactions. + // So we need to have this method to reflect it in the system contracts too. + // + // The reason is that as of now our node requires that each storage write (event, etc) belongs to a particular + // L2 block. In case a batch is sealed by timeout (i.e. the resources of the batch have not been exhaused, but we need + // to seal it to assure timely finality), we need to process sending funds to the operator *after* the last + // non-empty L2 block has been already sealed. We can not override old L2 blocks, so we need to create a new empty "fictive" block for it. + // + // The other reason why we need to set this block is so that in case of empty batch (i.e. the one which has no transactions), + // the virtual block number as well as miniblock number are incremented. + setL2Block(transactionIndex) + + callSystemContext({{RIGHT_PADDED_RESET_TX_NUMBER_IN_BLOCK_SELECTOR}}) + + publishTimestampDataToL1() + + // Sending system logs (to be processed on L1) + sendToL1Native(true, chainedPriorityTxnHashLogKey(), mload(PRIORITY_TXS_L1_DATA_BEGIN_BYTE())) + sendToL1Native(true, numberOfLayer1TxsLogKey(), mload(add(PRIORITY_TXS_L1_DATA_BEGIN_BYTE(), 32))) + + l1MessengerPublishingCall() } } -} \ No newline at end of file +} diff --git a/etc/system-contracts/bootloader/test_infra/Cargo.lock b/etc/system-contracts/bootloader/test_infra/Cargo.lock new file mode 100644 index 00000000..c3d586f0 --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/Cargo.lock @@ -0,0 +1,5418 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher", +] + +[[package]] +name = "aes-ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7729c3cde54d67063be556aeac75a81330d802f0259500ca40cb52967f975763" +dependencies = [ + "aes-soft", + "aesni", + "cipher", + "ctr", +] + +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher", + "opaque-debug", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher", + "opaque-debug", +] + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "arr_macro" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a105bfda48707cf19220129e78fca01e9639433ffaef4163546ed8fb04120a5" +dependencies = [ + "arr_macro_impl", + "proc-macro-hack", +] + +[[package]] +name = "arr_macro_impl" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0609c78bd572f4edc74310dfb63a01f5609d53fa8b4dd7c4d98aef3b3e8d72d1" +dependencies = [ + "proc-macro-hack", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +dependencies = [ + "nodrop", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-trait" +version = "0.1.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "atoi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bellman_ce" +version = "0.3.2" +source = "git+https://github.com/matter-labs/bellman?branch=dev#bbac0559fdc440b2331eca1c347a30559a3dd969" +dependencies = [ + "arrayvec 0.7.4", + "bit-vec", + "blake2s_const", + "blake2s_simd", + "byteorder", + "cfg-if 1.0.0", + "crossbeam 0.7.3", + "futures", + "hex", + "lazy_static", + "num_cpus", + "pairing_ce", + "rand 0.4.6", + "serde", + "smallvec", + "tiny-keccak 1.5.0", +] + +[[package]] +name = "bigdecimal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1e50562e37200edf7c6c43e54a08e64a5553bfb59d9c297d5572512aa517256" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.65.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "prettyplease", + "proc-macro2 1.0.66", + "quote 1.0.33", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.31", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "bitvec" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +dependencies = [ + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", + "tap", + "wyz 0.5.1", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac 0.8.0", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2-rfc_bellman_edition" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc60350286c7c3db13b98e91dbe5c8b6830a6821bc20af5b0c310ce94d74915" +dependencies = [ + "arrayvec 0.4.12", + "byteorder", + "constant_time_eq", +] + +[[package]] +name = "blake2s_const" +version = "0.6.0" +source = "git+https://github.com/matter-labs/bellman?branch=dev#bbac0559fdc440b2331eca1c347a30559a3dd969" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "blake2s_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-modes" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0" +dependencies = [ + "block-padding", + "cipher", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytecount" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "circuit_testing" +version = "0.1.0" +source = "git+https://github.com/matter-labs/era-circuit_testing.git?branch=main#164c0adac85be39ee44bd9456b2b91cdede5af80" +dependencies = [ + "bellman_ce", +] + +[[package]] +name = "clang-sys" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "codegen" +version = "0.1.0" +source = "git+https://github.com/matter-labs/solidity_plonk_verifier.git?branch=dev#07954802c13fb087efb5874c2ce521f843d614fd" +dependencies = [ + "ethereum-types 0.14.1", + "franklin-crypto", + "handlebars", + "hex", + "paste", + "rescue_poseidon", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "codegen" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff61280aed771c3070e7dcc9e050c66f1eb1e3b96431ba66f9f74641d02fc41d" +dependencies = [ + "indexmap 1.9.3", +] + +[[package]] +name = "colored" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +dependencies = [ + "is-terminal", + "lazy_static", + "windows-sys", +] + +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" + +[[package]] +name = "crossbeam" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-channel 0.4.4", + "crossbeam-deque 0.7.4", + "crossbeam-epoch 0.8.2", + "crossbeam-queue 0.2.3", + "crossbeam-utils 0.7.2", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-channel 0.5.8", + "crossbeam-deque 0.8.3", + "crossbeam-epoch 0.9.15", + "crossbeam-queue 0.3.8", + "crossbeam-utils 0.8.16", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils 0.8.16", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" +dependencies = [ + "crossbeam-epoch 0.8.2", + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch 0.9.15", + "crossbeam-utils 0.8.16", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset 0.5.6", + "scopeguard", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.16", + "memoffset 0.9.0", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils 0.8.16", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 0.1.10", + "lazy_static", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "crypto-mac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "cs_derive" +version = "0.1.0" +source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#e819d15b107a06a746299f98bbd9802e26eeb348" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.66", + "quote 1.0.33", + "serde", + "syn 1.0.109", +] + +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2 1.0.66", + "quote 1.0.33", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown 0.14.0", + "lock_api", + "once_cell", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2 1.0.66", + "quote 1.0.33", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +dependencies = [ + "serde", +] + +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct", + "crypto-bigint", + "der", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "elsa" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714f766f3556b44e7e4776ad133fcc3445a489517c25c704ace411bb14790194" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "envy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" +dependencies = [ + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "version_check", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types 0.14.1", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.6", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8" +dependencies = [ + "crunchy", + "fixed-hash 0.7.0", + "impl-rlp", + "impl-serde 0.3.2", + "tiny-keccak 2.0.2", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash 0.8.0", + "impl-rlp", + "impl-serde 0.4.0", + "tiny-keccak 2.0.2", +] + +[[package]] +name = "ethereum-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdaf" +dependencies = [ + "ethbloom 0.11.1", + "fixed-hash 0.7.0", + "impl-rlp", + "impl-serde 0.3.2", + "primitive-types 0.10.1", + "uint", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom 0.13.0", + "fixed-hash 0.8.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.1", + "uint", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_ce" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b538e4231443a5b9c507caee3356f016d832cf7393d2d90f03ea3180d4e3fbc" +dependencies = [ + "byteorder", + "ff_derive_ce", + "hex", + "rand 0.4.6", + "serde", +] + +[[package]] +name = "ff_derive_ce" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b96fbccd88dbb1fac4ee4a07c2fcc4ca719a74ffbd9d2b9d41d8c8eb073d8b20" +dependencies = [ + "num-bigint 0.4.4", + "num-integer", + "num-traits", + "proc-macro2 1.0.66", + "quote 1.0.33", + "serde", + "syn 1.0.109", +] + +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", + "libc", + "winapi", +] + +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "franklin-crypto" +version = "0.0.5" +source = "git+https://github.com/matter-labs/franklin-crypto?branch=dev#5922873d25ecec827cd60420ca8cd84a188bb965" +dependencies = [ + "arr_macro", + "bellman_ce", + "bit-vec", + "blake2 0.9.2", + "blake2-rfc_bellman_edition", + "blake2s_simd", + "byteorder", + "digest 0.9.0", + "hex", + "indexmap 1.9.3", + "itertools", + "lazy_static", + "num-bigint 0.4.4", + "num-derive 0.2.5", + "num-integer", + "num-traits", + "rand 0.4.6", + "serde", + "sha2 0.9.9", + "sha3 0.9.1", + "smallvec", + "splitmut", + "tiny-keccak 1.5.0", +] + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-intrusive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot 0.11.2", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "handlebars" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown 0.11.2", +] + +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.3", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac 0.12.1", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +dependencies = [ + "parity-scale-codec 2.3.1", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec 3.6.5", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg 1.1.0", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "ipnetwork" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c3eaab3ac0ede60ffa41add21970a7df7d91772c03383aac6c2c3d53cc716b" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.2", + "rustix", + "windows-sys", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "k256" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +dependencies = [ + "cfg-if 1.0.0", + "ecdsa", + "elliptic-curve", + "sha2 0.10.6", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "librocksdb-sys" +version = "0.11.0+8.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", + "glob", + "libc", + "libz-sys", +] + +[[package]] +name = "libz-sys" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linkme" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f948366ad5bb46b5514ba7a7a80643726eef08b06632592699676748c8bc33b" +dependencies = [ + "linkme-impl", +] + +[[package]] +name = "linkme-impl" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc28438cad73dcc90ff3466fc329a9252b1b8ba668eb0d5668ba97088cf4eef0" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg 1.1.0", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" + +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "metrics" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde3af1a009ed76a778cb84fdef9e7dbbdf5775ae3e4cc1f434a6a307f6f76c5" +dependencies = [ + "ahash 0.8.3", + "metrics-macros", + "portable-atomic", +] + +[[package]] +name = "metrics-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mini-moka" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e0b72e7c9042467008b10279fc732326bd605459ae03bda88825909dd19b56" +dependencies = [ + "crossbeam-channel 0.5.8", + "crossbeam-utils 0.8.16", + "dashmap", + "skeptic", + "smallvec", + "tagptr", + "triomphe", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f" +dependencies = [ + "num-bigint 0.3.3", + "num-complex 0.3.1", + "num-integer", + "num-iter", + "num-rational 0.3.2", + "num-traits", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint 0.4.4", + "num-complex 0.4.4", + "num-integer", + "num-iter", + "num-rational 0.4.1", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg 1.1.0", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg 1.1.0", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5" +dependencies = [ + "num-traits", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg 1.1.0", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg 1.1.0", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg 1.1.0", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg 1.1.0", + "num-bigint 0.4.4", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.2", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +dependencies = [ + "bitflags 2.4.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_info" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e" +dependencies = [ + "log", + "serde", + "winapi", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pairing_ce" +version = "0.28.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db007b21259660d025918e653508f03050bf23fb96a88601f9936329faadc597" +dependencies = [ + "byteorder", + "cfg-if 1.0.0", + "ff_ce", + "rand 0.4.6", + "serde", +] + +[[package]] +name = "parity-crypto" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b92ea9ddac0d6e1db7c49991e7d397d34a9fd814b4c93cda53788e8eef94e35" +dependencies = [ + "aes", + "aes-ctr", + "block-modes", + "digest 0.9.0", + "ethereum-types 0.12.1", + "hmac 0.10.1", + "lazy_static", + "pbkdf2 0.7.5", + "ripemd160", + "rustc-hex", + "scrypt", + "secp256k1 0.20.3", + "sha2 0.9.9", + "subtle", + "tiny-keccak 2.0.2", + "zeroize", +] + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.4", + "bitvec 0.20.4", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 2.3.1", + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +dependencies = [ + "arrayvec 0.7.4", + "bitvec 1.0.1", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 3.6.5", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets", +] + +[[package]] +name = "password-hash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54986aa4bfc9b98c6a5f40184223658d187159d7b3c6af33f2b2aa25ae1db0fa" +dependencies = [ + "base64ct", + "rand_core 0.6.4", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pbkdf2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b8c0d71734018084da0c0354193a5edfb81b20d2d57a92c5b154aefc554a4a" +dependencies = [ + "crypto-mac 0.10.1", +] + +[[package]] +name = "pbkdf2" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf916dd32dd26297907890d99dc2740e33f6bd9073965af4ccff2967962f5508" +dependencies = [ + "base64ct", + "crypto-mac 0.10.1", + "hmac 0.10.1", + "password-hash", + "sha2 0.9.9", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bee7be22ce7918f641a33f08e3f43388c7656772244e2bbb2477f44cc9021a" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1511785c5e98d79a05e8a6bc34b4ac2168a0e3e92161862030ad84daa223141" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "pest_meta" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.6", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "portable-atomic" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prettyplease" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +dependencies = [ + "proc-macro2 1.0.66", + "syn 2.0.31", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "impl-rlp", + "impl-serde 0.3.2", + "uint", +] + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash 0.8.0", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus-client" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c99afa9a01501019ac3a14d71d9f94050346f55ca471ce90c799a15c58f61e2" +dependencies = [ + "dtoa", + "itoa", + "parking_lot 0.12.1", + "prometheus-client-derive-encode", +] + +[[package]] +name = "prometheus-client-derive-encode" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "pulldown-cmark" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" +dependencies = [ + "bitflags 1.3.2", + "memchr", + "unicase", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2 1.0.66", +] + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +dependencies = [ + "autocfg 0.1.8", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.3.1", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +dependencies = [ + "libc", + "rand_core 0.4.2", + "winapi", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +dependencies = [ + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.4.2", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel 0.5.8", + "crossbeam-deque 0.8.3", + "crossbeam-utils 0.8.16", + "num_cpus", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.3.8", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "reqwest" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +dependencies = [ + "base64 0.21.3", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "rescue_poseidon" +version = "0.4.1" +source = "git+https://github.com/matter-labs/rescue-poseidon#f611a3353e48cf42153e44d89ed90da9bc5934e8" +dependencies = [ + "addchain", + "arrayvec 0.7.4", + "blake2 0.10.6", + "byteorder", + "franklin-crypto", + "num-bigint 0.3.3", + "num-integer", + "num-iter", + "num-traits", + "rand 0.4.6", + "serde", + "sha3 0.9.1", + "smallvec", +] + +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint", + "hmac 0.12.1", + "zeroize", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "ripemd160" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rocksdb" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe" +dependencies = [ + "libc", + "librocksdb-sys", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.3", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "salsa20" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da492dab03f925d977776a0b7233d7b934d6dc2b94faead48928e2e9bacedb9" +dependencies = [ + "base64 0.13.1", + "hmac 0.10.1", + "pbkdf2 0.6.0", + "rand 0.7.3", + "rand_core 0.5.1", + "salsa20", + "sha2 0.9.9", + "subtle", +] + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d03ceae636d0fed5bae6a7f4f664354c5f4fcedf6eef053fef17e49f837d0a" +dependencies = [ + "rand 0.6.5", + "secp256k1-sys 0.4.2", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys 0.8.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +dependencies = [ + "serde", +] + +[[package]] +name = "sentry" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e95efd0cefa32028cdb9766c96de71d96671072f9fb494dc9fb84c0ef93e52b" +dependencies = [ + "httpdate", + "native-tls", + "reqwest", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", + "sentry-panic", + "sentry-tracing", + "tokio", + "ureq", +] + +[[package]] +name = "sentry-backtrace" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac2bac6f310c4c4c4bb094d1541d32ae497f8c5c23405e85492cefdfe0971a9" +dependencies = [ + "backtrace", + "once_cell", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c3e17295cecdbacf66c5bd38d6e1147e09e1e9d824d2d5341f76638eda02a3a" +dependencies = [ + "hostname", + "libc", + "os_info", + "rustc_version", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8339474f587f36cb110fa1ed1b64229eea6d47b0b886375579297b7e47aeb055" +dependencies = [ + "once_cell", + "rand 0.8.5", + "sentry-types", + "serde", + "serde_json", +] + +[[package]] +name = "sentry-debug-images" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c11e7d2b809b06497a18a2e60f513206462ae2db27081dfb7be9ade1f329cc8" +dependencies = [ + "findshlibs", + "once_cell", + "sentry-core", +] + +[[package]] +name = "sentry-panic" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875b69f506da75bd664029eafb05f8934297d2990192896d17325f066bd665b7" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-tracing" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89feead9bdd116f8035e89567651340fc382db29240b6c55ef412078b08d1aa3" +dependencies = [ + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-types" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99dc599bd6646884fc403d593cdcb9816dd67c50cff3271c01ff123617908dcd" +dependencies = [ + "debugid", + "getrandom 0.2.10", + "hex", + "serde", + "serde_json", + "thiserror", + "time", + "url", + "uuid", +] + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "serde_json" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "base64 0.13.1", + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[package]] +name = "sha3" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "skeptic" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" +dependencies = [ + "bytecount", + "cargo_metadata", + "error-chain", + "glob", + "pulldown-cmark", + "tempfile", + "walkdir", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "splitmut" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85070f382340e8b23a75808e83573ddf65f9ad9143df9573ca37c1ed2ee956a" + +[[package]] +name = "sqlformat" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551873805652ba0d912fec5bbb0f8b4cdd96baf8e2ebf5970e5671092966019b" +dependencies = [ + "sqlx-core", + "sqlx-macros", +] + +[[package]] +name = "sqlx-core" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c61941ccf5ddcada342cd59e3e5173b007c509e1e8e990dafc830294d9dc5" +dependencies = [ + "ahash 0.7.6", + "atoi", + "base64 0.13.1", + "bigdecimal", + "bitflags 1.3.2", + "byteorder", + "bytes", + "chrono", + "crc", + "crossbeam-queue 0.3.8", + "dirs", + "either", + "event-listener", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-util", + "hashlink", + "hex", + "hkdf", + "hmac 0.12.1", + "indexmap 1.9.3", + "ipnetwork", + "itoa", + "libc", + "log", + "md-5", + "memchr", + "num-bigint 0.3.3", + "once_cell", + "paste", + "percent-encoding", + "rand 0.8.5", + "serde", + "serde_json", + "sha-1", + "sha2 0.10.6", + "smallvec", + "sqlformat", + "sqlx-rt", + "stringprep", + "thiserror", + "tokio-stream", + "url", + "whoami", +] + +[[package]] +name = "sqlx-macros" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0fba2b0cae21fc00fe6046f8baa4c7fcb49e379f0f592b04696607f69ed2e1" +dependencies = [ + "dotenv", + "either", + "heck 0.4.1", + "hex", + "once_cell", + "proc-macro2 1.0.66", + "quote 1.0.33", + "serde", + "serde_json", + "sha2 0.10.6", + "sqlx-core", + "sqlx-rt", + "syn 1.0.109", + "url", +] + +[[package]] +name = "sqlx-rt" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" +dependencies = [ + "native-tls", + "once_cell", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +dependencies = [ + "finl_unicode", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "structopt" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" +dependencies = [ + "clap", + "lazy_static", + "structopt-derive", +] + +[[package]] +name = "structopt-derive" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" +dependencies = [ + "heck 0.3.3", + "proc-macro-error", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2 1.0.66", + "quote 1.0.33", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "unicode-ident", +] + +[[package]] +name = "sync_vm" +version = "1.3.3" +source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#e819d15b107a06a746299f98bbd9802e26eeb348" +dependencies = [ + "arrayvec 0.7.4", + "cs_derive", + "derivative", + "franklin-crypto", + "hex", + "itertools", + "num-bigint 0.4.4", + "num-derive 0.3.3", + "num-integer", + "num-traits", + "once_cell", + "rand 0.4.6", + "rescue_poseidon", + "serde", + "sha2 0.10.6", + "sha3 0.10.6", + "smallvec", + "zk_evm", + "zkevm_opcode_defs", +] + +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "redox_syscall 0.3.5", + "rustix", + "windows-sys", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "test-log" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9601d162c1d77e62c1ea0bc8116cd1caf143ce3af947536c3c9052a1677fe0c" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "test_infra" +version = "0.1.0" +dependencies = [ + "colored", + "hex", + "once_cell", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", + "vlog", + "vm", + "zksync_contracts", + "zksync_state", + "zksync_types", + "zksync_utils", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" +dependencies = [ + "deranged", + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" +dependencies = [ + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.3", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "triomphe" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee8098afad3fb0c54a9007aab6804558410503ad676d4633f9c2559a00ac0f" + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +dependencies = [ + "base64 0.21.3", + "log", + "native-tls", + "once_cell", + "url", +] + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "vise" +version = "0.1.0" +source = "git+https://github.com/matter-labs/vise.git?rev=9d097ab747b037b6e62504df1db5b975425b6bdd#9d097ab747b037b6e62504df1db5b975425b6bdd" +dependencies = [ + "elsa", + "linkme", + "once_cell", + "prometheus-client", + "vise-macros", +] + +[[package]] +name = "vise-macros" +version = "0.1.0" +source = "git+https://github.com/matter-labs/vise.git?rev=9d097ab747b037b6e62504df1db5b975425b6bdd#9d097ab747b037b6e62504df1db5b975425b6bdd" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", +] + +[[package]] +name = "vlog" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "chrono", + "sentry", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "vm" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "anyhow", + "hex", + "itertools", + "once_cell", + "thiserror", + "tracing", + "vise", + "zk_evm", + "zksync_config", + "zksync_contracts", + "zksync_state", + "zksync_types", + "zksync_utils", +] + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote 1.0.33", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 2.0.31", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web3" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5388522c899d1e1c96a4c307e3797e0f697ba7c77dd8e0e625ecba9dd0342937" +dependencies = [ + "arrayvec 0.7.4", + "base64 0.21.3", + "bytes", + "derive_more", + "ethabi", + "ethereum-types 0.14.1", + "futures", + "futures-timer", + "headers", + "hex", + "idna", + "jsonrpc-core", + "log", + "once_cell", + "parking_lot 0.12.1", + "pin-project", + "reqwest", + "rlp", + "secp256k1 0.27.0", + "serde", + "serde_json", + "tiny-keccak 2.0.2", + "url", +] + +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + +[[package]] +name = "whoami" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys", +] + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zeroize" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" + +[[package]] +name = "zk_evm" +version = "1.3.3" +source = "git+https://github.com/matter-labs/era-zk_evm.git?branch=v1.3.3#fe8215a7047d24430ad470cf15a19bedb4d6ba0b" +dependencies = [ + "anyhow", + "lazy_static", + "num 0.4.1", + "serde", + "serde_json", + "static_assertions", + "zk_evm_abstractions", + "zkevm_opcode_defs", +] + +[[package]] +name = "zk_evm_abstractions" +version = "0.1.0" +source = "git+https://github.com/matter-labs/era-zk_evm_abstractions.git#7502a661d7d38906d849dcd3e7a15e5848af6581" +dependencies = [ + "anyhow", + "serde", + "static_assertions", + "zkevm_opcode_defs", +] + +[[package]] +name = "zkevm-assembly" +version = "1.3.2" +source = "git+https://github.com/matter-labs/era-zkEVM-assembly.git?branch=v1.3.2#3c61d450cbe6548068be8f313ed02f1bd229a865" +dependencies = [ + "env_logger", + "hex", + "lazy_static", + "log", + "nom", + "num-bigint 0.4.4", + "num-traits", + "sha3 0.10.6", + "smallvec", + "structopt", + "thiserror", + "zkevm_opcode_defs", +] + +[[package]] +name = "zkevm_opcode_defs" +version = "1.3.2" +source = "git+https://github.com/matter-labs/era-zkevm_opcode_defs.git?branch=v1.3.2#c7ab62f4c60b27dfc690c3ab3efb5fff1ded1a25" +dependencies = [ + "bitflags 2.4.0", + "blake2 0.10.6", + "ethereum-types 0.14.1", + "k256", + "lazy_static", + "sha2 0.10.6", + "sha3 0.10.6", +] + +[[package]] +name = "zkevm_test_harness" +version = "1.3.3" +source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.3.3#5fe3b73dba7c98e724358428ae10723c4758dfb5" +dependencies = [ + "bincode", + "circuit_testing", + "codegen 0.2.0", + "crossbeam 0.8.2", + "derivative", + "env_logger", + "hex", + "num-bigint 0.4.4", + "num-integer", + "num-traits", + "rayon", + "serde", + "serde_json", + "smallvec", + "structopt", + "sync_vm", + "test-log", + "tracing", + "zk_evm", + "zkevm-assembly", +] + +[[package]] +name = "zksync_basic_types" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "serde", + "serde_json", + "web3", +] + +[[package]] +name = "zksync_config" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "anyhow", + "bigdecimal", + "envy", + "hex", + "num 0.3.1", + "once_cell", + "serde", + "serde_json", + "url", + "zksync_basic_types", + "zksync_contracts", + "zksync_utils", +] + +[[package]] +name = "zksync_contracts" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "envy", + "ethabi", + "hex", + "once_cell", + "serde", + "serde_json", + "zksync_utils", +] + +[[package]] +name = "zksync_crypto" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "base64 0.13.1", + "blake2 0.10.6", + "hex", + "once_cell", + "serde", + "sha2 0.9.9", + "thiserror", + "zksync_basic_types", +] + +[[package]] +name = "zksync_dal" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "anyhow", + "bigdecimal", + "bincode", + "hex", + "itertools", + "num 0.3.1", + "once_cell", + "serde", + "serde_json", + "sqlx", + "strum", + "thiserror", + "tokio", + "tracing", + "vise", + "zksync_config", + "zksync_contracts", + "zksync_health_check", + "zksync_types", + "zksync_utils", +] + +[[package]] +name = "zksync_health_check" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "async-trait", + "futures", + "serde", + "serde_json", + "tokio", + "tracing", +] + +[[package]] +name = "zksync_mini_merkle_tree" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "once_cell", + "zksync_basic_types", + "zksync_crypto", +] + +[[package]] +name = "zksync_state" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "anyhow", + "metrics", + "mini-moka", + "tokio", + "tracing", + "vise", + "zksync_dal", + "zksync_storage", + "zksync_types", + "zksync_utils", +] + +[[package]] +name = "zksync_storage" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "num_cpus", + "once_cell", + "rocksdb", + "tracing", + "vise", +] + +[[package]] +name = "zksync_types" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "blake2 0.10.6", + "chrono", + "codegen 0.1.0", + "ethereum-types 0.12.1", + "num 0.3.1", + "num_enum", + "once_cell", + "parity-crypto", + "rlp", + "serde", + "serde_json", + "serde_with", + "strum", + "thiserror", + "zk_evm", + "zkevm_test_harness", + "zksync_basic_types", + "zksync_config", + "zksync_contracts", + "zksync_mini_merkle_tree", + "zksync_utils", +] + +[[package]] +name = "zksync_utils" +version = "0.1.0" +source = "git+https://github.com/matter-labs/zksync-era.git?branch=boojum-integration#d2ca29bf20b4ec2d9ec9e327b4ba6b281d9793de" +dependencies = [ + "anyhow", + "bigdecimal", + "futures", + "hex", + "itertools", + "metrics", + "num 0.3.1", + "reqwest", + "serde", + "thiserror", + "tokio", + "tracing", + "vlog", + "zk_evm", + "zksync_basic_types", +] diff --git a/etc/system-contracts/bootloader/test_infra/Cargo.toml b/etc/system-contracts/bootloader/test_infra/Cargo.toml new file mode 100644 index 00000000..e78bcf65 --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "test_infra" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] + +vm = { git = "https://github.com/matter-labs/zksync-era.git", branch = "boojum-integration" } +zksync_types = { git = "https://github.com/matter-labs/zksync-era.git", branch = "boojum-integration" } +zksync_contracts = { git = "https://github.com/matter-labs/zksync-era.git", branch = "boojum-integration" } +zksync_utils = { git = "https://github.com/matter-labs/zksync-era.git", branch = "boojum-integration" } +zksync_state = { git = "https://github.com/matter-labs/zksync-era.git", branch = "boojum-integration" } +vlog = { git = "https://github.com/matter-labs/zksync-era.git", branch = "boojum-integration" } + +colored = "2.0" +hex = "0.4" +once_cell = "1.7" +tracing = { version = "0.1.26", features = ["log"] } +tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter", "time", "json"] } +serde_json = "1.0.67" +serde = { version = "1.0", features = ["derive"] } diff --git a/etc/system-contracts/bootloader/test_infra/README.md b/etc/system-contracts/bootloader/test_infra/README.md new file mode 100644 index 00000000..f66ea39e --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/README.md @@ -0,0 +1,15 @@ +# Testing infrastructure for bootloader + +This crate allows you to run the unittests against the bootloader code. + +You should put your tests in `../tests/bootloader/bootloader_test.yul`, then compile the yul with: + +```shell +yarn build +``` + +And afterwards run the testing infrastructure: + +```shell +cargo run +``` diff --git a/etc/system-contracts/bootloader/test_infra/src/hook.rs b/etc/system-contracts/bootloader/test_infra/src/hook.rs new file mode 100644 index 00000000..1cb23ddf --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/src/hook.rs @@ -0,0 +1,129 @@ +use vm::{ + constants::{BOOTLOADER_HEAP_PAGE, VM_HOOK_PARAMS_START_POSITION}, + HistoryMode, SimpleMemory, +}; + +use zksync_types::{ + zkevm_test_harness::zk_evm::{ + aux_structures::MemoryPage, + tracing::{BeforeExecutionData, VmLocalStateData}, + zkevm_opcode_defs::{FatPointer, Opcode, UMAOpcode}, + }, + U256, +}; +use zksync_utils::u256_to_h256; + +#[derive(Clone, Debug)] +pub(crate) enum TestVmHook { + NoHook, + TestLog(String, String), + AssertEqFailed(String, String, String), + RequestedAssert(String), + // Testing framework reporting the number of tests. + TestCount(u32), + // 104 - test start. + TestStart(String), +} + +// Number of 32-bytes slots that are reserved for test hooks (passing information between bootloader test code and the VM). +const TEST_HOOKS: u32 = 5; +const TEST_HOOK_ENUM_POSITON: u32 = VM_HOOK_PARAMS_START_POSITION - 1; +const TEST_HOOK_START: u32 = TEST_HOOK_ENUM_POSITON - TEST_HOOKS; + +pub fn get_vm_hook_params(memory: &SimpleMemory) -> Vec { + memory.dump_page_content_as_u256_words( + BOOTLOADER_HEAP_PAGE, + TEST_HOOK_START..TEST_HOOK_ENUM_POSITON, + ) +} + +fn strip_trailing_zeros(input: &[u8]) -> &[u8] { + // Find the position of the last non-zero byte. + let end = input + .iter() + .rposition(|&byte| byte != 0) + .map(|pos| pos + 1) + .unwrap_or(0); + + // Return the byte slice up to the position found. + &input[..end] +} + +fn test_hook_as_string(hook_param: U256) -> String { + let msg = u256_to_h256(hook_param).as_bytes().to_vec(); + + String::from_utf8(strip_trailing_zeros(&msg).to_vec()).expect("Invalid debug message") +} + +fn test_hook_as_int_or_hex(hook_param: U256) -> String { + // For long data, it is better to use hex-encoding for greater readibility + if hook_param > U256::from(u64::max_value()) { + let mut bytes = [0u8; 32]; + hook_param.to_big_endian(&mut bytes); + format!("0x{}", hex::encode(bytes)) + } else { + hook_param.to_string() + } +} + +const fn heap_page_from_base(base: MemoryPage) -> MemoryPage { + MemoryPage(base.0 + 2) +} + +impl TestVmHook { + pub(crate) fn from_opcode_memory( + state: &VmLocalStateData<'_>, + data: &BeforeExecutionData, + memory: &SimpleMemory, + ) -> Self { + let opcode_variant = data.opcode.variant; + let heap_page = + heap_page_from_base(state.vm_local_state.callstack.current.base_memory_page).0; + + let src0_value = data.src0_value.value; + + let fat_ptr = FatPointer::from_u256(src0_value); + + let value = data.src1_value.value; + + // Only UMA opcodes in the bootloader serve for vm hooks + if !matches!(opcode_variant.opcode, Opcode::UMA(UMAOpcode::HeapWrite)) + || heap_page != BOOTLOADER_HEAP_PAGE + || fat_ptr.offset != TEST_HOOK_ENUM_POSITON * 32 + { + return Self::NoHook; + } + let vm_hook_params: Vec = get_vm_hook_params(memory); + + match value.as_u32() { + 100 => Self::TestLog( + test_hook_as_string(vm_hook_params[0]), + test_hook_as_int_or_hex(vm_hook_params[1]), + ), + 101 => Self::AssertEqFailed( + test_hook_as_int_or_hex(vm_hook_params[0]), + test_hook_as_int_or_hex(vm_hook_params[1]), + test_hook_as_string(vm_hook_params[2]), + ), + 102 => Self::RequestedAssert(test_hook_as_string(vm_hook_params[0])), + 103 => Self::TestCount(vm_hook_params[0].as_u32()), + 104 => Self::TestStart(test_hook_as_string(vm_hook_params[0])), + + _ => Self::NoHook, + } + } +} + +#[cfg(test)] +mod tests { + use zksync_types::U256; + + use crate::hook::test_hook_as_string; + + #[test] + fn test_to_string() { + let data: U256 = + U256::from("0x77696c6c4661696c000000000000000000000000000000000000000000000000"); + assert_eq!("willFail", test_hook_as_string(data)); + } +} diff --git a/etc/system-contracts/bootloader/test_infra/src/main.rs b/etc/system-contracts/bootloader/test_infra/src/main.rs new file mode 100644 index 00000000..e49e009d --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/src/main.rs @@ -0,0 +1,179 @@ +use crate::{test_count_tracer::TestCountTracer, tracer::BootloaderTestTracer}; +use colored::Colorize; +use once_cell::sync::OnceCell; +use std::process; +use std::{env, sync::Arc}; +use tracing_subscriber::fmt; +use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; +use vm::{ + HistoryDisabled, L1BatchEnv, L2BlockEnv, SystemEnv, TxExecutionMode, Vm, VmExecutionMode, + VmTracer, +}; +use zksync_contracts::{ + read_zbin_bytecode, BaseSystemContracts, ContractLanguage, SystemContractCode, + SystemContractsRepo, +}; +use zksync_state::{ + InMemoryStorage, StoragePtr, StorageView, IN_MEMORY_STORAGE_DEFAULT_NETWORK_ID, +}; +use zksync_types::system_contracts::get_system_smart_contracts_from_dir; +use zksync_types::{block::legacy_miniblock_hash, Address, L1BatchNumber, MiniblockNumber, U256}; +use zksync_types::{L2ChainId, Transaction}; +use zksync_utils::bytecode::hash_bytecode; +use zksync_utils::{bytes_to_be_words, u256_to_h256}; + +mod hook; +mod test_count_tracer; +mod tracer; + +// Executes bootloader unittests. +fn execute_internal_bootloader_test() { + let test_location = env::current_dir() + .unwrap() + .join("../build/artifacts/bootloader_test.yul/bootloader_test.yul.zbin"); + println!("Current dir is {:?}", test_location); + let bytecode = read_zbin_bytecode(test_location.as_path()); + let hash = hash_bytecode(&bytecode); + let bootloader = SystemContractCode { + code: bytes_to_be_words(bytecode), + hash, + }; + + let repo = SystemContractsRepo { + root: env::current_dir().unwrap().join("../../"), + }; + + let bytecode = repo.read_sys_contract_bytecode("", "DefaultAccount", ContractLanguage::Sol); + let hash = hash_bytecode(&bytecode); + let default_aa = SystemContractCode { + code: bytes_to_be_words(bytecode), + hash, + }; + + let base_system_contract = BaseSystemContracts { + bootloader, + default_aa, + }; + + let system_env = SystemEnv { + zk_porter_available: false, + version: zksync_types::ProtocolVersionId::latest(), + base_system_smart_contracts: base_system_contract, + gas_limit: u32::MAX, + execution_mode: TxExecutionMode::VerifyExecute, + default_validation_computational_gas_limit: u32::MAX, + chain_id: zksync_types::L2ChainId::from(299), + }; + + let mut l1_batch_env = L1BatchEnv { + previous_batch_hash: None, + number: L1BatchNumber::from(1), + timestamp: 14, + l1_gas_price: 250_000_000, + fair_l2_gas_price: 250_000_000, + fee_account: Address::default(), + + enforced_base_fee: None, + first_l2_block: L2BlockEnv { + number: 1, + timestamp: 15, + prev_block_hash: legacy_miniblock_hash(MiniblockNumber(0)), + max_virtual_blocks_to_create: 1, + }, + }; + + // First - get the number of tests. + let test_count = { + let storage: StoragePtr> = + StorageView::new(InMemoryStorage::with_custom_system_contracts_and_chain_id( + L2ChainId::from(IN_MEMORY_STORAGE_DEFAULT_NETWORK_ID), + hash_bytecode, + get_system_smart_contracts_from_dir(env::current_dir().unwrap().join("../../")), + )) + .to_rc_ptr(); + + let mut vm = Vm::new( + l1_batch_env.clone(), + system_env.clone(), + storage.clone(), + HistoryDisabled, + ); + + let test_count = Arc::new(OnceCell::default()); + let custom_tracers = vec![Box::new(TestCountTracer::new(test_count.clone())) + as Box, HistoryDisabled>>]; + + // We're using a TestCountTracer (and passing 0 as fee account) - this should cause the bootloader + // test framework to report number of tests via VM hook. + vm.inspect(custom_tracers, VmExecutionMode::Bootloader); + + test_count.get().unwrap().clone() + }; + println!(" ==== Running {} tests ====", test_count); + + let mut tests_failed: u32 = 0; + + // Now we iterate over the tests. + for test_id in 1..=test_count { + println!("\n === Running test {}", test_id); + + let storage: StoragePtr> = + StorageView::new(InMemoryStorage::with_custom_system_contracts_and_chain_id( + L2ChainId::from(IN_MEMORY_STORAGE_DEFAULT_NETWORK_ID), + hash_bytecode, + get_system_smart_contracts_from_dir(env::current_dir().unwrap().join("../../")), + )) + .to_rc_ptr(); + + // We are passing id of the test in location (0) where we normally put the operator. + // This is then picked up by the testing framework. + l1_batch_env.fee_account = zksync_types::H160::from(u256_to_h256(U256::from(test_id))); + let mut vm = Vm::new( + l1_batch_env.clone(), + system_env.clone(), + storage.clone(), + HistoryDisabled, + ); + let test_result = Arc::new(OnceCell::default()); + + let custom_tracers = vec![Box::new(BootloaderTestTracer::new(test_result.clone())) + as Box, HistoryDisabled>>]; + + // Let's insert transactions into slots. They are not executed, but the tests can run functions against them. + let json_str = include_str!("test_transactions/0.json"); + let tx: Transaction = serde_json::from_str(json_str).unwrap(); + vm.push_transaction(tx); + + vm.inspect(custom_tracers, VmExecutionMode::Bootloader); + + let test_result = test_result.get().unwrap(); + match &test_result.result { + Ok(_) => println!("{} {}", "[PASS]".green(), test_result.test_name), + Err(error_info) => { + tests_failed += 1; + println!( + "{} {} {}", + "[FAIL]".red(), + test_result.test_name, + error_info + ) + } + } + } + if tests_failed > 0 { + println!("{}", format!("{} tests failed.", tests_failed).red()); + process::exit(1); + } else { + println!("{}", "ALL tests passed.".green()) + } +} + +fn main() { + tracing_subscriber::registry() + .with(fmt::Layer::default()) + .with(tracing_subscriber::EnvFilter::from_default_env()) + .init(); + + execute_internal_bootloader_test(); +} diff --git a/etc/system-contracts/bootloader/test_infra/src/test_count_tracer.rs b/etc/system-contracts/bootloader/test_infra/src/test_count_tracer.rs new file mode 100644 index 00000000..7e5adc5a --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/src/test_count_tracer.rs @@ -0,0 +1,50 @@ +use std::sync::Arc; + +use once_cell::sync::OnceCell; +use vm::{ + DynTracer, ExecutionEndTracer, ExecutionProcessing, HistoryMode, SimpleMemory, + VmExecutionResultAndLogs, VmTracer, +}; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::zkevm_test_harness::zk_evm::tracing::{BeforeExecutionData, VmLocalStateData}; + +use crate::hook::TestVmHook; + +/// Tracer that returns number of tests in the bootloader test file. +pub struct TestCountTracer { + /// Returns number of tests in the yul file. + pub test_count: Arc>, +} + +impl TestCountTracer { + /// Creates the tracer that should also report the amount of tests in a file. + pub fn new(test_count_result: Arc>) -> Self { + TestCountTracer { + test_count: test_count_result, + } + } +} + +impl DynTracer for TestCountTracer { + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &SimpleMemory, + _storage: StoragePtr, + ) { + if let TestVmHook::TestCount(test_count) = + TestVmHook::from_opcode_memory(&state, &data, memory) + { + self.test_count.set(test_count).unwrap(); + } + } +} + +impl ExecutionEndTracer for TestCountTracer {} + +impl ExecutionProcessing for TestCountTracer {} + +impl VmTracer for TestCountTracer { + fn save_results(&mut self, _result: &mut VmExecutionResultAndLogs) {} +} diff --git a/etc/system-contracts/bootloader/test_infra/src/test_transactions/0.json b/etc/system-contracts/bootloader/test_infra/src/test_transactions/0.json new file mode 100644 index 00000000..0edb7a92 --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/src/test_transactions/0.json @@ -0,0 +1,46 @@ +{ + "common_data": { + "L2": { + "nonce": 1, + "fee": { + "gas_limit": "0xfd617", + "max_fee_per_gas": "0xee6b280", + "max_priority_fee_per_gas": "0x0", + "gas_per_pubdata_limit": "0xc350" + }, + "initiatorAddress": "0x36615cf349d7f6344891b1e7ca7c72883f5dc049", + "signature": [ + 132, 90, 248, 214, 198, 24, 213, 194, 29, 253, 36, 112, 77, 245, 167, 245, 245, 120, 200, 225, 31, 40, 16, 76, + 182, 155, 102, 8, 166, 115, 59, 80, 92, 183, 251, 203, 109, 202, 149, 230, 132, 173, 160, 72, 234, 181, 177, 31, + 224, 177, 28, 52, 251, 76, 107, 79, 160, 132, 47, 135, 199, 146, 71, 193, 28 + ], + "transactionType": "EIP712Transaction", + "input": { + "hash": "0xf415e63408ab712fa72f7931ba8e1f21f9d5e86a2a76fb6857fe7efb84ac8ed4", + "data": [ + 113, 248, 236, 1, 128, 132, 14, 230, 178, 128, 131, 15, 214, 23, 148, 17, 28, 62, 137, 206, 128, 230, 46, 232, + 131, 24, 194, 128, 73, 32, 212, 201, 111, 146, 187, 128, 184, 100, 164, 19, 104, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 75, 105, 108, 108, 101, 114, 32, 99, 111, 109, + 98, 111, 32, 49, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 1, 4, 128, 128, 130, 1, 4, 148, + 54, 97, 92, 243, 73, 215, 246, 52, 72, 145, 177, 231, 202, 124, 114, 136, 63, 93, 192, 73, 130, 195, 80, 192, + 184, 65, 132, 90, 248, 214, 198, 24, 213, 194, 29, 253, 36, 112, 77, 245, 167, 245, 245, 120, 200, 225, 31, + 40, 16, 76, 182, 155, 102, 8, 166, 115, 59, 80, 92, 183, 251, 203, 109, 202, 149, 230, 132, 173, 160, 72, 234, + 181, 177, 31, 224, 177, 28, 52, 251, 76, 107, 79, 160, 132, 47, 135, 199, 146, 71, 193, 28, 192 + ] + }, + "paymasterParams": { + "paymaster": "0x0000000000000000000000000000000000000000", + "paymasterInput": [] + } + } + }, + "execute": { + "contractAddress": "0x111c3e89ce80e62ee88318c2804920d4c96f92bb", + "calldata": "0xa4136862000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000104b696c6c657220636f6d626f2031343400000000000000000000000000000000", + "value": "0x0", + "factoryDeps": [] + }, + "received_timestamp_ms": 1695015132601, + "raw_bytes": "0x71f8ec0180840ee6b280830fd61794111c3e89ce80e62ee88318c2804920d4c96f92bb80b864a4136862000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000104b696c6c657220636f6d626f203134340000000000000000000000000000000082010480808201049436615cf349d7f6344891b1e7ca7c72883f5dc04982c350c0b841845af8d6c618d5c21dfd24704df5a7f5f578c8e11f28104cb69b6608a6733b505cb7fbcb6dca95e684ada048eab5b11fe0b11c34fb4c6b4fa0842f87c79247c11cc0" +} diff --git a/etc/system-contracts/bootloader/test_infra/src/test_transactions/README.md b/etc/system-contracts/bootloader/test_infra/src/test_transactions/README.md new file mode 100644 index 00000000..ee6c1178 --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/src/test_transactions/README.md @@ -0,0 +1,8 @@ +# Test Transactions + +This directory contains JSON serialized 'Transaction' objects that are inserted into bootloader memory during +unittesting. + +Please add files with consecutive numbers (0.json, 1.json) - and insert into bootloader in the same order. + +Then, they can be accessed in the unittest, by calling `testing_txDataOffset(x)`. diff --git a/etc/system-contracts/bootloader/test_infra/src/tracer.rs b/etc/system-contracts/bootloader/test_infra/src/tracer.rs new file mode 100644 index 00000000..942389f2 --- /dev/null +++ b/etc/system-contracts/bootloader/test_infra/src/tracer.rs @@ -0,0 +1,138 @@ +use std::sync::Arc; + +use colored::Colorize; + +use once_cell::sync::OnceCell; +use vm::{ + DynTracer, ExecutionEndTracer, ExecutionProcessing, Halt, HistoryMode, SimpleMemory, + TracerExecutionStatus, TracerExecutionStopReason, VmExecutionResultAndLogs, VmTracer, +}; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::zkevm_test_harness::zk_evm::tracing::{BeforeExecutionData, VmLocalStateData}; + +use crate::hook::TestVmHook; + +#[derive(Debug)] +pub struct TestResult { + pub test_name: String, + pub result: Result<(), String>, +} + +/// Bootloader test tracer that is executing while the bootloader tests are running. +/// It can check the assers, return information about the running tests (and amount of tests) etc. +pub struct BootloaderTestTracer { + /// Set if the currently running test has failed. + test_result: Arc>, + /// Set, if the currently running test should fail with a given assert. + requested_assert: Option, + + test_name: Option, +} + +impl BootloaderTestTracer { + pub fn new(test_result: Arc>) -> Self { + BootloaderTestTracer { + test_result, + requested_assert: None, + test_name: None, + } + } +} + +impl DynTracer for BootloaderTestTracer { + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &SimpleMemory, + _storage: StoragePtr, + ) { + let hook = TestVmHook::from_opcode_memory(&state, &data, memory); + + if let TestVmHook::TestLog(msg, data_str) = &hook { + println!("{} {} {}", "Test log".bold(), msg, data_str); + } + if let TestVmHook::AssertEqFailed(a, b, msg) = &hook { + let result = format!("Assert failed: {} is not equal to {}: {}", a, b, msg); + + self.test_result + .set(TestResult { + test_name: self.test_name.clone().unwrap_or("".to_owned()), + result: Err(result.clone()), + }) + .unwrap(); + } + if let TestVmHook::RequestedAssert(requested_assert) = &hook { + self.requested_assert = Some(requested_assert.clone()) + } + + if let TestVmHook::TestStart(test_name) = &hook { + self.test_name = Some(test_name.clone()); + } + } +} + +impl ExecutionEndTracer for BootloaderTestTracer { + fn should_stop_execution(&self) -> TracerExecutionStatus { + if let Some(TestResult { + test_name: _, + result: Err(_), + }) = self.test_result.get() + { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + return TracerExecutionStatus::Continue; + } +} + +impl ExecutionProcessing for BootloaderTestTracer {} + +impl VmTracer for BootloaderTestTracer { + fn save_results(&mut self, result: &mut VmExecutionResultAndLogs) { + let r = if let Some(requested_assert) = &self.requested_assert { + match &result.result { + vm::ExecutionResult::Success { .. } => Err(format!( + "Should have failed with {}, but run succesfully.", + requested_assert + )), + vm::ExecutionResult::Revert { output } => Err(format!( + "Should have failed with {}, but run reverted with {}.", + requested_assert, + output.to_user_friendly_string() + )), + vm::ExecutionResult::Halt { reason } => { + if let Halt::UnexpectedVMBehavior(reason) = reason { + let reason = reason.strip_prefix("Assertion error: ").unwrap(); + if reason == requested_assert { + Ok(()) + } else { + Err(format!( + "Should have failed with `{}`, but failed with different assert `{}`", + requested_assert, reason + )) + } + } else { + Err(format!( + "Should have failed with `{}`, but halted with`{}`", + requested_assert, reason + )) + } + } + } + } else { + match &result.result { + vm::ExecutionResult::Success { .. } => Ok(()), + vm::ExecutionResult::Revert { output } => Err(output.to_user_friendly_string()), + vm::ExecutionResult::Halt { reason } => Err(reason.to_string()), + } + }; + if self.test_result.get().is_none() { + self.test_result + .set(TestResult { + test_name: self.test_name.clone().unwrap_or("".to_owned()), + result: r, + }) + .unwrap(); + } + } +} diff --git a/etc/system-contracts/bootloader/tests/README.md b/etc/system-contracts/bootloader/tests/README.md new file mode 100644 index 00000000..31acb0ec --- /dev/null +++ b/etc/system-contracts/bootloader/tests/README.md @@ -0,0 +1,23 @@ +# Testing + +## Full tests + +`dummy.yul` and `transfer_tests.yul` are full Yul files, which are replacing the bootloader, and are used in +`zksync-era` crate. + +## Unittests + +Please put bootloader unittests in `bootloader/bootloader_test.yul` file, and any testing utility functions in +`utils/test_utils.yul`. + +To execute tests, you should first run yarn to prepare the source code: + +```shell +yarn preprocess && yarn compile-yul +``` + +And then run the test framework: + +```shell +cd test_infa && cargo run +``` diff --git a/etc/system-contracts/bootloader/tests/bootloader/bootloader_test.yul b/etc/system-contracts/bootloader/tests/bootloader/bootloader_test.yul new file mode 100644 index 00000000..cd41c45d --- /dev/null +++ b/etc/system-contracts/bootloader/tests/bootloader/bootloader_test.yul @@ -0,0 +1,52 @@ +function TEST_safeSub() { + testing_assertEq(safeSub(10, 7, "err"), 3, "Failed to subtract 7") + testing_assertEq(safeSub(10, 8, "err"), 2, "Failed to subtract 8") +} + +function TEST_safeDiv() { + testing_assertEq(safeDiv(4, 2, "err"), 2, "Simple division") + testing_assertEq(safeDiv(5, 2, "err"), 2, "Rouding") + testing_assertEq(safeDiv(5, 3, "err"), 1, "Rouding down") + testing_assertEq(safeDiv(4, 3, "err"), 1, "Rouding down") + testing_assertEq(safeDiv(0, 3, "err"), 0, "Rouding down") +} +function TEST_safeDivAssert() { + testing_testWillFailWith("divByZero") + safeDiv(4, 0, "divByZero") +} + +function TEST_asserts() { + testing_testWillFailWith("willFail") + safeSub(10, 12, "willFail") +} + +function TEST_safeMul() { + testing_assertEq(safeMul(4, 2, "err"), 8, "Simple") + testing_assertEq(safeMul(0, 2, "err"), 0, "With zero") + testing_assertEq(safeMul(0, 0, "err"), 0, "With zero") + testing_assertEq(safeMul(2, 0, "err"), 0, "With zero") +} + +function TEST_safeMulAssert() { + testing_testWillFailWith("overflow") + let left := shl(129, 1) + testing_log("left", left) + safeMul(left, left, "overflow") +} + +// function TEST_should ignore + +function TEST_strLen() { + testing_assertEq(getStrLen("abcd"), 4, "short string") + testing_assertEq(getStrLen("00"), 2, "0 filled string") + testing_assertEq(getStrLen(""), 0, "empty string") + testing_assertEq(getStrLen("12345678901234567890123456789012"), 32, "max length") + testing_assertEq(getStrLen("1234567890123456789012345678901234"), 0, "over max length") +} + +function TEST_simple_transaction() { + // We'll test the transaction from 0.json + let txDataOffset := testing_txDataOffset(0) + let innerTxDataOffset := add(txDataOffset, 0x20) + testing_assertEq(getGasPerPubdataByteLimit(innerTxDataOffset), 0xc350, "Invalid pubdata limit") +} diff --git a/etc/system-contracts/bootloader/tests/utils/test_utils.yul b/etc/system-contracts/bootloader/tests/utils/test_utils.yul new file mode 100644 index 00000000..561a4679 --- /dev/null +++ b/etc/system-contracts/bootloader/tests/utils/test_utils.yul @@ -0,0 +1,55 @@ + + +// We're locating the test hooks 'before' the last free slot. +function TEST_HOOK_PTR() -> ret { + ret := LAST_FREE_SLOT() +} + +function TEST_HOOK_PARAMS_OFFSET() -> ret { + ret := sub(TEST_HOOK_PTR(), mul(5, 32)) +} + +function setTestHook(hook) { + mstore(TEST_HOOK_PTR(), unoptimized(hook)) +} + +function storeTestHookParam(paramId, value) { + let offset := add(TEST_HOOK_PARAMS_OFFSET(), mul(32, paramId)) + mstore(offset, unoptimized(value)) +} + + +function testing_log(msg, data) { + storeTestHookParam(0, nonOptimized(msg)) + storeTestHookParam(1, nonOptimized(data)) + setTestHook(nonOptimized(100)) +} + +function testing_start(test_name) { + storeTestHookParam(0, nonOptimized(test_name)) + setTestHook(nonOptimized(104)) +} + +function testing_assertEq(a, b, message) { + if iszero(eq(a, b)) { + storeTestHookParam(0, nonOptimized(a)) + storeTestHookParam(1, nonOptimized(b)) + storeTestHookParam(2, nonOptimized(message)) + setTestHook(nonOptimized(101)) + } +} + +function testing_testWillFailWith(message) { + storeTestHookParam(0, unoptimized(message)) + setTestHook(nonOptimized(102)) +} +function testing_totalTests(tests) { + storeTestHookParam(0, unoptimized(tests)) + setTestHook(nonOptimized(103)) +} + +// Returns txDataOffset for the index transaction. +function testing_txDataOffset(index) -> txDataOffset { + let txPtr := add(TX_DESCRIPTION_BEGIN_BYTE(), mul(index, TX_DESCRIPTION_SIZE())) + txDataOffset := mload(add(txPtr, 0x20)) +} diff --git a/etc/system-contracts/contracts/AccountCodeStorage.sol b/etc/system-contracts/contracts/AccountCodeStorage.sol index 1dbdcabe..d5027f2f 100644 --- a/etc/system-contracts/contracts/AccountCodeStorage.sol +++ b/etc/system-contracts/contracts/AccountCodeStorage.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./interfaces/IAccountCodeStorage.sol"; import "./libraries/Utils.sol"; @@ -8,6 +8,7 @@ import {DEPLOYER_SYSTEM_CONTRACT, NONCE_HOLDER_SYSTEM_CONTRACT, CURRENT_MAX_PREC /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The storage of this contract serves as a mapping for the code hashes of the 32-byte account addresses. * @dev Code hash is not strictly a hash, it's a structure where the first byte denotes the version of the hash, * the second byte denotes whether the contract is constructed, and the next two bytes denote the length in 32-byte words. @@ -44,7 +45,7 @@ contract AccountCodeStorage is IAccountCodeStorage { /// but checks whether the bytecode hash corresponds to the constructed smart contract. function storeAccountConstructedCodeHash(address _address, bytes32 _hash) external override onlyDeployer { // Check that code hash corresponds to the deploying smart contract - require(Utils.isContractConstructed(_hash), "Code hash is not for a contract on constructor"); + require(Utils.isContractConstructed(_hash), "Code hash is not for a constructed contract"); _storeCodeHash(_address, _hash); } diff --git a/etc/system-contracts/contracts/BootloaderUtilities.sol b/etc/system-contracts/contracts/BootloaderUtilities.sol index ad5f13da..49467bdc 100644 --- a/etc/system-contracts/contracts/BootloaderUtilities.sol +++ b/etc/system-contracts/contracts/BootloaderUtilities.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./interfaces/IBootloaderUtilities.sol"; import "./libraries/TransactionHelper.sol"; @@ -9,6 +9,7 @@ import "./libraries/EfficientCall.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice A contract that provides some utility methods for the bootloader * that is very hard to write in Yul. */ diff --git a/etc/system-contracts/contracts/BytecodeCompressor.sol b/etc/system-contracts/contracts/BytecodeCompressor.sol deleted file mode 100644 index b406ecb1..00000000 --- a/etc/system-contracts/contracts/BytecodeCompressor.sol +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -import "./interfaces/IBytecodeCompressor.sol"; -import "./Constants.sol"; -import "./libraries/Utils.sol"; -import "./libraries/UnsafeBytesCalldata.sol"; - -/** - * @author Matter Labs - * @notice Simple implementation of the compression algorithm specialized for zkEVM bytecode. - * @dev Every deployed bytecode in zkEVM should be publicly restorable from the L1 data availability. - * For this reason, the user may request the sequencer to publish the original bytecode and mark it as known. - * Or the user may compress the bytecode and publish it instead (fewer data onchain!). - */ -contract BytecodeCompressor is IBytecodeCompressor { - using UnsafeBytesCalldata for bytes; - - modifier onlyBootloader() { - require(msg.sender == BOOTLOADER_FORMAL_ADDRESS, "Callable only by the bootloader"); - _; - } - - /// @notice Verify the compressed bytecode and publish it on the L1. - /// @param _bytecode The original bytecode to be verified against. - /// @param _rawCompressedData The compressed bytecode in a format of: - /// - 2 bytes: the length of the dictionary - /// - N bytes: the dictionary - /// - M bytes: the encoded data - /// @dev The dictionary is a sequence of 8-byte chunks, each of them has the associated index. - /// @dev The encoded data is a sequence of 2-byte chunks, each of them is an index of the dictionary. - /// @dev The compression algorithm works as follows: - /// 1. The original bytecode is split into 8-byte chunks. - /// Since the bytecode size is always a multiple of 32, this is always possible. - /// 2. For each 8-byte chunk in the original bytecode: - /// * If the chunk is not already in the dictionary, it is added to the dictionary array. - /// * If the dictionary becomes overcrowded (2^16 + 1 elements), the compression process will fail. - /// * The 2-byte index of the chunk in the dictionary is added to the encoded data. - /// @dev Currently, the method may be called only from the bootloader because the server is not ready to publish bytecodes - /// in internal transactions. However, in the future, we will allow everyone to publish compressed bytecodes. - function publishCompressedBytecode( - bytes calldata _bytecode, - bytes calldata _rawCompressedData - ) external payable onlyBootloader returns (bytes32 bytecodeHash) { - unchecked { - (bytes calldata dictionary, bytes calldata encodedData) = _decodeRawBytecode(_rawCompressedData); - - require(dictionary.length % 8 == 0, "Dictionary length should be a multiple of 8"); - require(dictionary.length <= 2 ** 16 * 8, "Dictionary is too big"); - require( - encodedData.length * 4 == _bytecode.length, - "Encoded data length should be 4 times shorter than the original bytecode" - ); - - for (uint256 encodedDataPointer = 0; encodedDataPointer < encodedData.length; encodedDataPointer += 2) { - uint256 indexOfEncodedChunk = uint256(encodedData.readUint16(encodedDataPointer)) * 8; - require(indexOfEncodedChunk < dictionary.length, "Encoded chunk index is out of bounds"); - - uint64 encodedChunk = dictionary.readUint64(indexOfEncodedChunk); - uint64 realChunk = _bytecode.readUint64(encodedDataPointer * 4); - - require(encodedChunk == realChunk, "Encoded chunk does not match the original bytecode"); - } - } - - bytecodeHash = Utils.hashL2Bytecode(_bytecode); - - bytes32 rawCompressedDataHash = L1_MESSENGER_CONTRACT.sendToL1(_rawCompressedData); - KNOWN_CODE_STORAGE_CONTRACT.markBytecodeAsPublished( - bytecodeHash, - rawCompressedDataHash, - _rawCompressedData.length - ); - } - - /// @notice Decode the raw compressed data into the dictionary and the encoded data. - /// @param _rawCompressedData The compressed bytecode in a format of: - /// - 2 bytes: the bytes length of the dictionary - /// - N bytes: the dictionary - /// - M bytes: the encoded data - function _decodeRawBytecode( - bytes calldata _rawCompressedData - ) internal pure returns (bytes calldata dictionary, bytes calldata encodedData) { - unchecked { - // The dictionary length can't be more than 2^16, so it fits into 2 bytes. - uint256 dictionaryLen = uint256(_rawCompressedData.readUint16(0)); - dictionary = _rawCompressedData[2:2 + dictionaryLen * 8]; - encodedData = _rawCompressedData[2 + dictionaryLen * 8:]; - } - } -} diff --git a/etc/system-contracts/contracts/ComplexUpgrader.sol b/etc/system-contracts/contracts/ComplexUpgrader.sol index 0968b5fd..2f4d886c 100644 --- a/etc/system-contracts/contracts/ComplexUpgrader.sol +++ b/etc/system-contracts/contracts/ComplexUpgrader.sol @@ -1,26 +1,24 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; -import "./interfaces/IComplexUpgrader.sol"; +import {IComplexUpgrader} from "./interfaces/IComplexUpgrader.sol"; import {FORCE_DEPLOYER} from "./Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice Upgrader which should be used to perform complex multistep upgrades on L2. In case some custom logic for an upgrade is needed * this logic should be deployed into the user space and then this contract will delegatecall to the deployed contract. */ contract ComplexUpgrader is IComplexUpgrader { /// @notice Executes an upgrade process by delegating calls to another contract. - /// @dev This function allows only the `FORCE_DEPLOYER` to initiate the upgrade. + /// @dev This function allows only the `FORCE_DEPLOYER` to initiate the upgrade. /// If the delegate call fails, the function will revert the transaction, returning the error message /// provided by the delegated contract. /// @param _delegateTo the address of the contract to which the calls will be delegated /// @param _calldata the calldata to be delegate called in the `_delegateTo` contract - function upgrade( - address _delegateTo, - bytes calldata _calldata - ) external payable { + function upgrade(address _delegateTo, bytes calldata _calldata) external payable { require(msg.sender == FORCE_DEPLOYER, "Can only be called by FORCE_DEPLOYER"); require(_delegateTo.code.length > 0, "Delegatee is an EOA"); diff --git a/etc/system-contracts/contracts/Compressor.sol b/etc/system-contracts/contracts/Compressor.sol new file mode 100644 index 00000000..24aac725 --- /dev/null +++ b/etc/system-contracts/contracts/Compressor.sol @@ -0,0 +1,250 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +import {ICompressor, OPERATION_BITMASK, LENGTH_BITS_OFFSET, MAX_ENUMERATION_INDEX_SIZE} from "./interfaces/ICompressor.sol"; +import {ISystemContract} from "./interfaces/ISystemContract.sol"; +import {Utils} from "./libraries/Utils.sol"; +import {UnsafeBytesCalldata} from "./libraries/UnsafeBytesCalldata.sol"; +import {EfficientCall} from "./libraries/EfficientCall.sol"; +import {L1_MESSENGER_CONTRACT, INITIAL_WRITE_STARTING_POSITION, COMPRESSED_INITIAL_WRITE_SIZE, STATE_DIFF_ENTRY_SIZE, STATE_DIFF_ENUM_INDEX_OFFSET, STATE_DIFF_FINAL_VALUE_OFFSET, STATE_DIFF_DERIVED_KEY_OFFSET, DERIVED_KEY_LENGTH, VALUE_LENGTH, ENUM_INDEX_LENGTH, KNOWN_CODE_STORAGE_CONTRACT} from "./Constants.sol"; + +/** + * @author Matter Labs + * @custom:security-contact security@matterlabs.dev + * @notice Contract with code pertaining to compression for zkEVM; at the moment this is used for bytecode compression + * and state diff compression validation. + * @dev Every deployed bytecode/published state diffs in zkEVM should be publicly restorable from the L1 data availability. + * For this reason, the user may request the sequencer to publish the original bytecode and mark it as known. + * Or the user may compress the bytecode and publish it instead (fewer data onchain!). At the end of every L1 Batch + * we publish pubdata, part of which contains the state diffs that occurred within the batch. + */ +contract Compressor is ICompressor, ISystemContract { + using UnsafeBytesCalldata for bytes; + + /// @notice Verify the compressed bytecode and publish it on the L1. + /// @param _bytecode The original bytecode to be verified against. + /// @param _rawCompressedData The compressed bytecode in a format of: + /// - 2 bytes: the length of the dictionary + /// - N bytes: the dictionary + /// - M bytes: the encoded data + /// @dev The dictionary is a sequence of 8-byte chunks, each of them has the associated index. + /// @dev The encoded data is a sequence of 2-byte chunks, each of them is an index of the dictionary. + /// @dev The compression algorithm works as follows: + /// 1. The original bytecode is split into 8-byte chunks. + /// Since the bytecode size is always a multiple of 32, this is always possible. + /// 2. For each 8-byte chunk in the original bytecode: + /// * If the chunk is not already in the dictionary, it is added to the dictionary array. + /// * If the dictionary becomes overcrowded (2^16 + 1 elements), the compression process will fail. + /// * The 2-byte index of the chunk in the dictionary is added to the encoded data. + /// @dev Currently, the method may be called only from the bootloader because the server is not ready to publish bytecodes + /// in internal transactions. However, in the future, we will allow everyone to publish compressed bytecodes. + function publishCompressedBytecode( + bytes calldata _bytecode, + bytes calldata _rawCompressedData + ) external payable onlyCallFromBootloader returns (bytes32 bytecodeHash) { + unchecked { + (bytes calldata dictionary, bytes calldata encodedData) = _decodeRawBytecode(_rawCompressedData); + + require(dictionary.length % 8 == 0, "Dictionary length should be a multiple of 8"); + require(dictionary.length <= 2 ** 16 * 8, "Dictionary is too big"); + require( + encodedData.length * 4 == _bytecode.length, + "Encoded data length should be 4 times shorter than the original bytecode" + ); + + for (uint256 encodedDataPointer = 0; encodedDataPointer < encodedData.length; encodedDataPointer += 2) { + uint256 indexOfEncodedChunk = uint256(encodedData.readUint16(encodedDataPointer)) * 8; + require(indexOfEncodedChunk < dictionary.length, "Encoded chunk index is out of bounds"); + + uint64 encodedChunk = dictionary.readUint64(indexOfEncodedChunk); + uint64 realChunk = _bytecode.readUint64(encodedDataPointer * 4); + + require(encodedChunk == realChunk, "Encoded chunk does not match the original bytecode"); + } + } + + bytecodeHash = Utils.hashL2Bytecode(_bytecode); + L1_MESSENGER_CONTRACT.sendToL1(_rawCompressedData); + KNOWN_CODE_STORAGE_CONTRACT.markBytecodeAsPublished(bytecodeHash); + } + + /// @notice Verifies that the compression of state diffs has been done correctly for the {_stateDiffs} param. + /// @param _numberOfStateDiffs The number of state diffs being checked. + /// @param _enumerationIndexSize Number of bytes used to represent an enumeration index for repeated writes. + /// @param _stateDiffs Encoded full state diff structs. See the first dev comment below for encoding. + /// @param _compressedStateDiffs The compressed state diffs + /// @dev We don't verify that the size of {_stateDiffs} is equivalent to {_numberOfStateDiffs} * STATE_DIFF_ENTRY_SIZE since that check is + /// done within the L1Messenger calling contract. + /// @return stateDiffHash Hash of the encoded (uncompressed) state diffs to be committed to via system log. + /// @dev This check assumes that the ordering of state diffs are sorted by (address, key) for the encoded state diffs and + /// then the compressed are sorted the same but with all the initial writes coming before the repeated writes. + /// @dev state diff: [20bytes address][32bytes key][32bytes derived key][8bytes enum index][32bytes initial value][32bytes final value] + /// @dev The compression format: + /// - 2 bytes: number of initial writes + /// - N bytes initial writes + /// - 32 bytes derived key + /// - 1 byte metadata: + /// - first 5 bits: length in bytes of compressed value + /// - last 3 bits: operation + /// - 0 -> Nothing (32 bytes) + /// - 1 -> Add + /// - 2 -> Subtract + /// - 3 -> Transform (< 32 bytes) + /// - Len Bytes: Compressed Value + /// - M bytes repeated writes + /// - {_enumerationIndexSize} bytes for enumeration index + /// - 1 byte metadata: + /// - first 5 bits: length in bytes of compressed value + /// - last 3 bits: operation + /// - 0 -> Nothing (32 bytes) + /// - 1 -> Add + /// - 2 -> Subtract + /// - 3 -> Transform (< 32 bytes) + /// - Len Bytes: Compressed Value + function verifyCompressedStateDiffs( + uint256 _numberOfStateDiffs, + uint256 _enumerationIndexSize, + bytes calldata _stateDiffs, + bytes calldata _compressedStateDiffs + ) external payable onlyCallFrom(address(L1_MESSENGER_CONTRACT)) returns (bytes32 stateDiffHash) { + // We do not enforce the operator to use the optimal, i.e. the minimally possible _enumerationIndexSize. + // We do enforce however, that the _enumerationIndexSize is not larger than 8 bytes long, which is the + // maximal ever possible size for enumeration index. + require(_enumerationIndexSize <= MAX_ENUMERATION_INDEX_SIZE, "enumeration index size is too large"); + + uint256 numberOfInitialWrites = uint256(_compressedStateDiffs.readUint16(0)); + + uint256 stateDiffPtr = 2; + uint256 numInitialWritesProcessed = 0; + + // Process initial writes + for (uint256 i = 0; i < _numberOfStateDiffs * STATE_DIFF_ENTRY_SIZE; i += STATE_DIFF_ENTRY_SIZE) { + bytes calldata stateDiff = _stateDiffs[i:i + STATE_DIFF_ENTRY_SIZE]; + uint64 enumIndex = stateDiff.readUint64(84); + if (enumIndex != 0) { + // It is a repeated write, so we skip it. + continue; + } + + numInitialWritesProcessed++; + + bytes32 derivedKey = stateDiff.readBytes32(52); + uint256 initValue = stateDiff.readUint256(92); + uint256 finalValue = stateDiff.readUint256(124); + require(derivedKey == _compressedStateDiffs.readBytes32(stateDiffPtr), "iw: initial key mismatch"); + stateDiffPtr += 32; + + uint8 metadata = uint8(bytes1(_compressedStateDiffs[stateDiffPtr])); + stateDiffPtr++; + uint8 operation = metadata & OPERATION_BITMASK; + uint8 len = operation == 0 ? 32 : metadata >> LENGTH_BITS_OFFSET; + _verifyValueCompression( + initValue, + finalValue, + operation, + _compressedStateDiffs[stateDiffPtr:stateDiffPtr + len] + ); + stateDiffPtr += len; + } + + require(numInitialWritesProcessed == numberOfInitialWrites, "Incorrect number of initial storage diffs"); + + // Process repeated writes + for (uint256 i = 0; i < _numberOfStateDiffs * STATE_DIFF_ENTRY_SIZE; i += STATE_DIFF_ENTRY_SIZE) { + bytes calldata stateDiff = _stateDiffs[i:i + STATE_DIFF_ENTRY_SIZE]; + uint64 enumIndex = stateDiff.readUint64(84); + if (enumIndex == 0) { + continue; + } + + uint256 initValue = stateDiff.readUint256(92); + uint256 finalValue = stateDiff.readUint256(124); + uint256 compressedEnumIndex = _sliceToUint256( + _compressedStateDiffs[stateDiffPtr:stateDiffPtr + _enumerationIndexSize] + ); + require(enumIndex == compressedEnumIndex, "rw: enum key mismatch"); + stateDiffPtr += _enumerationIndexSize; + + uint8 metadata = uint8(bytes1(_compressedStateDiffs[stateDiffPtr])); + stateDiffPtr += 1; + uint8 operation = metadata & OPERATION_BITMASK; + uint8 len = operation == 0 ? 32 : metadata >> LENGTH_BITS_OFFSET; + _verifyValueCompression( + initValue, + finalValue, + operation, + _compressedStateDiffs[stateDiffPtr:stateDiffPtr + len] + ); + stateDiffPtr += len; + } + + require(stateDiffPtr == _compressedStateDiffs.length, "Extra data in _compressedStateDiffs"); + + stateDiffHash = EfficientCall.keccak(_stateDiffs); + } + + /// @notice Decode the raw compressed data into the dictionary and the encoded data. + /// @param _rawCompressedData The compressed bytecode in a format of: + /// - 2 bytes: the bytes length of the dictionary + /// - N bytes: the dictionary + /// - M bytes: the encoded data + function _decodeRawBytecode( + bytes calldata _rawCompressedData + ) internal pure returns (bytes calldata dictionary, bytes calldata encodedData) { + unchecked { + // The dictionary length can't be more than 2^16, so it fits into 2 bytes. + uint256 dictionaryLen = uint256(_rawCompressedData.readUint16(0)); + dictionary = _rawCompressedData[2:2 + dictionaryLen * 8]; + encodedData = _rawCompressedData[2 + dictionaryLen * 8:]; + } + } + + /// @notice Verify value compression was done correct given initial value, final value, operation, and compressed value + /// @param _initialValue Previous value of key/enumeration index. + /// @param _finalValue Updated value of key/enumeration index. + /// @param _operation The operation that was performed on value. + /// @param _compressedValue The slice of calldata with compressed value either representing the final + /// value or difference between initial and final value. It should be of arbitrary length less than or equal to 32 bytes. + /// @dev It is the responsibility of the caller of this function to ensure that the `_compressedValue` has length no longer than 32 bytes. + /// @dev Operation id mapping: + /// 0 -> Nothing (32 bytes) + /// 1 -> Add + /// 2 -> Subtract + /// 3 -> Transform (< 32 bytes) + function _verifyValueCompression( + uint256 _initialValue, + uint256 _finalValue, + uint256 _operation, + bytes calldata _compressedValue + ) internal pure { + uint256 convertedValue = _sliceToUint256(_compressedValue); + + unchecked { + if (_operation == 0 || _operation == 3) { + require(convertedValue == _finalValue, "transform or no compression: compressed and final mismatch"); + } else if (_operation == 1) { + require( + _initialValue + convertedValue == _finalValue, + "add: initial plus converted not equal to final" + ); + } else if (_operation == 2) { + require( + _initialValue - convertedValue == _finalValue, + "sub: initial minus converted not equal to final" + ); + } else { + revert("unsupported operation"); + } + } + } + + /// @notice Converts a calldata slice into uint256. It is the responsibility of the caller to ensure that + /// the _calldataSlice has length no longer than 32 bytes + /// @param _calldataSlice The calldata slice to convert to uint256 + /// @return number The uint256 representation of the calldata slice + function _sliceToUint256(bytes calldata _calldataSlice) internal pure returns (uint256 number) { + number = uint256(bytes32(_calldataSlice)); + number >>= (256 - (_calldataSlice.length * 8)); + } +} diff --git a/etc/system-contracts/contracts/Constants.sol b/etc/system-contracts/contracts/Constants.sol index 048f9b54..f0896710 100644 --- a/etc/system-contracts/contracts/Constants.sol +++ b/etc/system-contracts/contracts/Constants.sol @@ -1,18 +1,18 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "./interfaces/IAccountCodeStorage.sol"; -import "./interfaces/INonceHolder.sol"; -import "./interfaces/IContractDeployer.sol"; -import "./interfaces/IKnownCodesStorage.sol"; -import "./interfaces/IImmutableSimulator.sol"; -import "./interfaces/IEthToken.sol"; -import "./interfaces/IL1Messenger.sol"; -import "./interfaces/ISystemContext.sol"; -import "./interfaces/IBytecodeCompressor.sol"; -import "./interfaces/IComplexUpgrader.sol"; -import "./BootloaderUtilities.sol"; +pragma solidity 0.8.20; + +import {IAccountCodeStorage} from "./interfaces/IAccountCodeStorage.sol"; +import {INonceHolder} from "./interfaces/INonceHolder.sol"; +import {IContractDeployer} from "./interfaces/IContractDeployer.sol"; +import {IKnownCodesStorage} from "./interfaces/IKnownCodesStorage.sol"; +import {IImmutableSimulator} from "./interfaces/IImmutableSimulator.sol"; +import {IEthToken} from "./interfaces/IEthToken.sol"; +import {IL1Messenger} from "./interfaces/IL1Messenger.sol"; +import {ISystemContext} from "./interfaces/ISystemContext.sol"; +import {ICompressor} from "./interfaces/ICompressor.sol"; +import {IComplexUpgrader} from "./interfaces/IComplexUpgrader.sol"; +import {IBootloaderUtilities} from "./interfaces/IBootloaderUtilities.sol"; /// @dev All the system contracts introduced by zkSync have their addresses /// started from 2^15 in order to avoid collision with Ethereum precompiles. @@ -24,13 +24,13 @@ uint160 constant MAX_SYSTEM_CONTRACT_ADDRESS = 0xffff; // 2^16 - 1 address constant ECRECOVER_SYSTEM_CONTRACT = address(0x01); address constant SHA256_SYSTEM_CONTRACT = address(0x02); +address constant ECADD_SYSTEM_CONTRACT = address(0x06); +address constant ECMUL_SYSTEM_CONTRACT = address(0x07); -/// @dev The current maximum deployed precompile address. -/// Note: currently only two precompiles are deployed: -/// 0x01 - ecrecover -/// 0x02 - sha256 -/// Important! So the constant should be updated if more precompiles are deployed. -uint256 constant CURRENT_MAX_PRECOMPILE_ADDRESS = uint256(uint160(SHA256_SYSTEM_CONTRACT)); +/// @dev The maximal possible address of an L1-like precompie. These precompiles maintain the following properties: +/// - Their extcodehash is EMPTY_STRING_KECCAK +/// - Their extcodesize is 0 despite having a bytecode formally deployed there. +uint256 constant CURRENT_MAX_PRECOMPILE_ADDRESS = 0xff; address payable constant BOOTLOADER_FORMAL_ADDRESS = payable(address(SYSTEM_CONTRACTS_OFFSET + 0x01)); IAccountCodeStorage constant ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT = IAccountCodeStorage( @@ -55,17 +55,13 @@ address constant KECCAK256_SYSTEM_CONTRACT = address(SYSTEM_CONTRACTS_OFFSET + 0 ISystemContext constant SYSTEM_CONTEXT_CONTRACT = ISystemContext(payable(address(SYSTEM_CONTRACTS_OFFSET + 0x0b))); -BootloaderUtilities constant BOOTLOADER_UTILITIES = BootloaderUtilities(address(SYSTEM_CONTRACTS_OFFSET + 0x0c)); +IBootloaderUtilities constant BOOTLOADER_UTILITIES = IBootloaderUtilities(address(SYSTEM_CONTRACTS_OFFSET + 0x0c)); address constant EVENT_WRITER_CONTRACT = address(SYSTEM_CONTRACTS_OFFSET + 0x0d); -IBytecodeCompressor constant BYTECODE_COMPRESSOR_CONTRACT = IBytecodeCompressor( - address(SYSTEM_CONTRACTS_OFFSET + 0x0e) -); +ICompressor constant COMPRESSOR_CONTRACT = ICompressor(address(SYSTEM_CONTRACTS_OFFSET + 0x0e)); -IComplexUpgrader constant COMPLEX_UPGRADER_CONTRACT = IComplexUpgrader( - address(SYSTEM_CONTRACTS_OFFSET + 0x0f) -); +IComplexUpgrader constant COMPLEX_UPGRADER_CONTRACT = IComplexUpgrader(address(SYSTEM_CONTRACTS_OFFSET + 0x0f)); /// @dev If the bitwise AND of the extraAbi[2] param when calling the MSG_VALUE_SIMULATOR /// is non-zero, the call will be assumed to be a system one. @@ -80,3 +76,49 @@ bytes32 constant CREATE2_PREFIX = 0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c /// @dev Prefix used during derivation of account addresses using CREATE /// @dev keccak256("zksyncCreate") bytes32 constant CREATE_PREFIX = 0x63bae3a9951d38e8a3fbb7b70909afc1200610fc5bc55ade242f815974674f23; + +/// @dev Each state diff consists of 156 bytes of actual data and 116 bytes of unused padding, needed for circuit efficiency. +uint256 constant STATE_DIFF_ENTRY_SIZE = 272; + +/// @dev While the "real" amount of pubdata that can be sent rarely exceeds the 110k - 120k, it is better to +/// allow the operator to provide any reasonably large value in order to avoid unneeded constraints on the operator. +uint256 constant MAX_ALLOWED_PUBDATA_PER_BATCH = 520000; + +enum SystemLogKey { + L2_TO_L1_LOGS_TREE_ROOT_KEY, + TOTAL_L2_TO_L1_PUBDATA_KEY, + STATE_DIFF_HASH_KEY, + PACKED_BATCH_AND_L2_BLOCK_TIMESTAMP_KEY, + PREV_BATCH_HASH_KEY, + CHAINED_PRIORITY_TXN_HASH_KEY, + NUMBER_OF_LAYER_1_TXS_KEY, + EXPECTED_SYSTEM_CONTRACT_UPGRADE_TX_HASH_KEY +} + +/// @dev The number of leaves in the L2->L1 log Merkle tree. +/// While formally a tree of any length is acceptable, the node supports only a constant length of 2048 leaves. +uint256 constant L2_TO_L1_LOGS_MERKLE_TREE_LEAVES = 2048; + +/// @dev The length of the derived key in bytes inside compressed state diffs. +uint256 constant DERIVED_KEY_LENGTH = 32; +/// @dev The length of the enum index in bytes inside compressed state diffs. +uint256 constant ENUM_INDEX_LENGTH = 8; +/// @dev The length of value in bytes inside compressed state diffs. +uint256 constant VALUE_LENGTH = 32; + +/// @dev The length of the compressed initial storage write in bytes. +uint256 constant COMPRESSED_INITIAL_WRITE_SIZE = DERIVED_KEY_LENGTH + VALUE_LENGTH; +/// @dev The length of the compressed repeated storage write in bytes. +uint256 constant COMPRESSED_REPEATED_WRITE_SIZE = ENUM_INDEX_LENGTH + VALUE_LENGTH; + +/// @dev The position from which the initial writes start in the compressed state diffs. +uint256 constant INITIAL_WRITE_STARTING_POSITION = 4; + +/// @dev Each storage diffs consists of the following elements: +/// [20bytes address][32bytes key][32bytes derived key][8bytes enum index][32bytes initial value][32bytes final value] +/// @dev The offset of the deriived key in a storage diff. +uint256 constant STATE_DIFF_DERIVED_KEY_OFFSET = 52; +/// @dev The offset of the enum index in a storage diff. +uint256 constant STATE_DIFF_ENUM_INDEX_OFFSET = 84; +/// @dev The offset of the final value in a storage diff. +uint256 constant STATE_DIFF_FINAL_VALUE_OFFSET = 124; diff --git a/etc/system-contracts/contracts/ContractDeployer.sol b/etc/system-contracts/contracts/ContractDeployer.sol index 029e48d9..50af9742 100644 --- a/etc/system-contracts/contracts/ContractDeployer.sol +++ b/etc/system-contracts/contracts/ContractDeployer.sol @@ -1,18 +1,19 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import {ImmutableData} from "./interfaces/IImmutableSimulator.sol"; -import "./interfaces/IContractDeployer.sol"; -import {CREATE2_PREFIX, CREATE_PREFIX, NONCE_HOLDER_SYSTEM_CONTRACT, ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT, FORCE_DEPLOYER, MAX_SYSTEM_CONTRACT_ADDRESS, KNOWN_CODE_STORAGE_CONTRACT, ETH_TOKEN_SYSTEM_CONTRACT, IMMUTABLE_SIMULATOR_SYSTEM_CONTRACT, COMPLEX_UPGRADER_CONTRACT} from "./Constants.sol"; +import {IContractDeployer} from "./interfaces/IContractDeployer.sol"; +import {CREATE2_PREFIX, CREATE_PREFIX, NONCE_HOLDER_SYSTEM_CONTRACT, ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT, FORCE_DEPLOYER, MAX_SYSTEM_CONTRACT_ADDRESS, KNOWN_CODE_STORAGE_CONTRACT, ETH_TOKEN_SYSTEM_CONTRACT, IMMUTABLE_SIMULATOR_SYSTEM_CONTRACT, COMPLEX_UPGRADER_CONTRACT, KECCAK256_SYSTEM_CONTRACT} from "./Constants.sol"; -import "./libraries/Utils.sol"; -import "./libraries/EfficientCall.sol"; +import {Utils} from "./libraries/Utils.sol"; +import {EfficientCall} from "./libraries/EfficientCall.sol"; import {SystemContractHelper} from "./libraries/SystemContractHelper.sol"; -import "./interfaces/ISystemContract.sol"; +import {ISystemContract} from "./interfaces/ISystemContract.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice System smart contract that is responsible for deploying other smart contracts on zkSync. * @dev The contract is responsible for generating the address of the deployed smart contract, * incrementing the deployment nonce and making sure that the constructor is never called twice in a contract. @@ -43,7 +44,10 @@ contract ContractDeployer is IContractDeployer, ISystemContract { } // It is an EOA, it is still an account. - if (ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT.getRawCodeHash(_address) == 0) { + if ( + _address > address(MAX_SYSTEM_CONTRACT_ADDRESS) && + ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT.getRawCodeHash(_address) == 0 + ) { return AccountAbstractionVersion.Version1; } @@ -213,6 +217,9 @@ contract ContractDeployer is IContractDeployer, ISystemContract { function forceDeployOnAddress(ForceDeployment calldata _deployment, address _sender) external payable onlySelf { _ensureBytecodeIsKnown(_deployment.bytecodeHash); + // Since the `forceDeployOnAddress` function is called only during upgrades, the Governance is trusted to correctly select + // the addresses to deploy the new bytecodes to and to assess whether overriding the AccountInfo for the "force-deployed" + // contract is acceptable. AccountInfo memory newAccountInfo; newAccountInfo.supportedAAVersion = AccountAbstractionVersion.None; // Accounts have sequential nonces by default. @@ -227,8 +234,23 @@ contract ContractDeployer is IContractDeployer, ISystemContract { false, _deployment.callConstructor ); + } - emit ContractDeployed(_sender, _deployment.bytecodeHash, _deployment.newAddress); + /// @notice The method that is temporarily needed to upgrade the Keccak256 precompile. It is to be removed in the + /// future. Unlike a normal forced deployment, it does not update account information as it requires updating a + /// mapping, and so requires Keccak256 precompile to work already. + /// @dev This method expects the sender (FORCE_DEPLOYER) to provide the correct bytecode hash for the Keccak256 + /// precompile. + function forceDeployKeccak256(bytes32 _keccak256BytecodeHash) external payable onlyCallFrom(FORCE_DEPLOYER) { + _ensureBytecodeIsKnown(_keccak256BytecodeHash); + _constructContract( + msg.sender, + address(KECCAK256_SYSTEM_CONTRACT), + _keccak256BytecodeHash, + msg.data[0:0], + false, + false + ); } /// @notice This method is to be used only during an upgrade to set bytecodes on specific addresses. @@ -236,7 +258,7 @@ contract ContractDeployer is IContractDeployer, ISystemContract { /// by `FORCE_DEPLOYER`. function forceDeployOnAddresses(ForceDeployment[] calldata _deployments) external payable { require( - msg.sender == FORCE_DEPLOYER || msg.sender == address(COMPLEX_UPGRADER_CONTRACT), + msg.sender == FORCE_DEPLOYER || msg.sender == address(COMPLEX_UPGRADER_CONTRACT), "Can only be called by FORCE_DEPLOYER or COMPLEX_UPGRADER_CONTRACT" ); @@ -294,7 +316,6 @@ contract ContractDeployer is IContractDeployer, ISystemContract { _storeAccountInfo(_newAddress, newAccountInfo); _constructContract(msg.sender, _newAddress, _bytecodeHash, _input, false, true); - emit ContractDeployed(msg.sender, _bytecodeHash, _newAddress); } /// @notice Check that bytecode hash is marked as known on the `KnownCodeStorage` system contracts @@ -351,5 +372,7 @@ contract ContractDeployer is IContractDeployer, ISystemContract { // If we do not call the constructor, we need to set the constructed code hash. ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT.storeAccountConstructedCodeHash(_newAddress, _bytecodeHash); } + + emit ContractDeployed(_sender, _bytecodeHash, _newAddress); } } diff --git a/etc/system-contracts/contracts/DefaultAccount.sol b/etc/system-contracts/contracts/DefaultAccount.sol index 2db9bbd0..b5cb46c9 100644 --- a/etc/system-contracts/contracts/DefaultAccount.sol +++ b/etc/system-contracts/contracts/DefaultAccount.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./interfaces/IAccount.sol"; import "./libraries/TransactionHelper.sol"; @@ -10,6 +10,7 @@ import {BOOTLOADER_FORMAL_ADDRESS, NONCE_HOLDER_SYSTEM_CONTRACT, DEPLOYER_SYSTEM /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The default implementation of account. * @dev The bytecode of the contract is set by default for all addresses for which no other bytecodes are deployed. * @notice If the caller is not a bootloader always returns empty data on call, just like EOA does. @@ -67,14 +68,7 @@ contract DefaultAccount is IAccount { bytes32, // _txHash bytes32 _suggestedSignedHash, Transaction calldata _transaction - ) - external - payable - override - ignoreNonBootloader - ignoreInDelegateCall - returns (bytes4 magic) - { + ) external payable override ignoreNonBootloader ignoreInDelegateCall returns (bytes4 magic) { magic = _validateTransaction(_suggestedSignedHash, _transaction); } @@ -90,36 +84,29 @@ contract DefaultAccount is IAccount { uint32(gasleft()), address(NONCE_HOLDER_SYSTEM_CONTRACT), 0, - abi.encodeCall( - INonceHolder.incrementMinNonceIfEquals, - (_transaction.nonce) - ) + abi.encodeCall(INonceHolder.incrementMinNonceIfEquals, (_transaction.nonce)) ); // Even though for the transaction types present in the system right now, // we always provide the suggested signed hash, this should not be // always expected. In case the bootloader has no clue what the default hash // is, the bytes32(0) will be supplied. - bytes32 txHash = _suggestedSignedHash != bytes32(0) - ? _suggestedSignedHash - : _transaction.encodeHash(); + bytes32 txHash = _suggestedSignedHash != bytes32(0) ? _suggestedSignedHash : _transaction.encodeHash(); // The fact there is are enough balance for the account // should be checked explicitly to prevent user paying for fee for a // transaction that wouldn't be included on Ethereum. uint256 totalRequiredBalance = _transaction.totalRequiredBalance(); - require( - totalRequiredBalance <= address(this).balance, - "Not enough balance for fee + value" - ); + require(totalRequiredBalance <= address(this).balance, "Not enough balance for fee + value"); if (_isValidSignature(txHash, _transaction.signature)) { magic = ACCOUNT_VALIDATION_SUCCESS_MAGIC; - } else { - magic = bytes4(0); } } + /// + /// FOUNDRY SUPPORT START + /// /// @notice Method called by the bootloader to execute the transaction. /// @param _transaction The transaction to execute. /// @dev It also accepts unused _txHash and _suggestedSignedHash parameters: @@ -129,30 +116,11 @@ contract DefaultAccount is IAccount { bytes32, // _txHash bytes32, // _suggestedSignedHash Transaction calldata _transaction - ) - external - payable - override - ignoreNonBootloader - ignoreInDelegateCall - returns ( - /// - /// DEBUG SUPPORT START - /// - bytes memory returnData - ) - { - /// - /// DEBUG SUPPORT END - /// - + ) external payable override ignoreNonBootloader ignoreInDelegateCall returns (bytes memory returnData) { _execute(_transaction); - /// - /// DEBUG SUPPORT START - /// returnData = bytes(""); /// - /// DEBUG SUPPORT END + /// FOUNDRY SUPPORT END /// } @@ -161,9 +129,7 @@ contract DefaultAccount is IAccount { /// of the account via L1 -> L2 communication. However, the default account can initiate a transaction /// from L1, so we formally implement the interface method, but it doesn't execute any logic. /// @param _transaction The transaction to execute. - function executeTransactionFromOutside( - Transaction calldata _transaction - ) external payable override { + function executeTransactionFromOutside(Transaction calldata _transaction) external payable override { // Behave the same as for fallback/receive, just execute nothing, returns nothing } @@ -187,13 +153,7 @@ contract DefaultAccount is IAccount { selector == DEPLOYER_SYSTEM_CONTRACT.createAccount.selector || selector == DEPLOYER_SYSTEM_CONTRACT.create2Account.selector; } - bool success = EfficientCall.rawCall( - gas, - to, - value, - data, - isSystemCall - ); + bool success = EfficientCall.rawCall(gas, to, value, data, isSystemCall); if (!success) { EfficientCall.propagateRevert(); } @@ -203,10 +163,7 @@ contract DefaultAccount is IAccount { /// @param _hash The hash of the transaction to be signed. /// @param _signature The signature of the transaction. /// @return EIP1271_SUCCESS_RETURN_VALUE if the signaure is correct. It reverts otherwise. - function _isValidSignature( - bytes32 _hash, - bytes memory _signature - ) internal view returns (bool) { + function _isValidSignature(bytes32 _hash, bytes memory _signature) internal view returns (bool) { require(_signature.length == 65, "Signature length is incorrect"); uint8 v; bytes32 r; @@ -231,16 +188,11 @@ contract DefaultAccount is IAccount { // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. - require( - uint256(s) <= - 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, - "Invalid s" - ); + require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "Invalid s"); address recoveredAddress = ecrecover(_hash, v, r, s); - return - recoveredAddress == address(this) && recoveredAddress != address(0); + return recoveredAddress == address(this) && recoveredAddress != address(0); } /// @notice Method for paying the bootloader for the transaction. @@ -272,7 +224,7 @@ contract DefaultAccount is IAccount { _transaction.processPaymasterInput(); } - fallback() external payable { + fallback() external payable ignoreInDelegateCall { // fallback of default account shouldn't be called by bootloader under no circumstances assert(msg.sender != BOOTLOADER_FORMAL_ADDRESS); diff --git a/etc/system-contracts/contracts/EmptyContract.sol b/etc/system-contracts/contracts/EmptyContract.sol index 75b788dc..f0304beb 100644 --- a/etc/system-contracts/contracts/EmptyContract.sol +++ b/etc/system-contracts/contracts/EmptyContract.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The "empty" contract that is put into some system contracts by default. * @dev The bytecode of the contract is set by default for all addresses for which no other bytecodes are deployed. */ diff --git a/etc/system-contracts/contracts/EventWriter.yul b/etc/system-contracts/contracts/EventWriter.yul index 0a64510d..4cd4a381 100644 --- a/etc/system-contracts/contracts/EventWriter.yul +++ b/etc/system-contracts/contracts/EventWriter.yul @@ -1,11 +1,14 @@ /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The contract responsible for decoding and writing events using low-level instructions. * @dev The metadata and topics are passed via registers, and the first accessible register contains their number. * The rest of the data is passed via calldata without copying. */ object "EventWriter" { - code { } + code { + return(0, 0) + } object "EventWriter_deployed" { code { //////////////////////////////////////////////////////////////// diff --git a/etc/system-contracts/contracts/ImmutableSimulator.sol b/etc/system-contracts/contracts/ImmutableSimulator.sol index e56f1ce7..a018c92a 100644 --- a/etc/system-contracts/contracts/ImmutableSimulator.sol +++ b/etc/system-contracts/contracts/ImmutableSimulator.sol @@ -1,12 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./interfaces/IImmutableSimulator.sol"; import {DEPLOYER_SYSTEM_CONTRACT} from "./Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice System smart contract that simulates the behavior of immutable variables in Solidity. * @dev The contract stores the immutable variables created during deployment by other contracts on his storage. * @dev This simulator is needed so that smart contracts with the same Solidity code but different diff --git a/etc/system-contracts/contracts/KnownCodesStorage.sol b/etc/system-contracts/contracts/KnownCodesStorage.sol index b3cb637f..2dda7854 100644 --- a/etc/system-contracts/contracts/KnownCodesStorage.sol +++ b/etc/system-contracts/contracts/KnownCodesStorage.sol @@ -1,39 +1,35 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; -import "./interfaces/IKnownCodesStorage.sol"; -import "./libraries/Utils.sol"; -import "./libraries/SystemContractHelper.sol"; -import {BOOTLOADER_FORMAL_ADDRESS, BYTECODE_COMPRESSOR_CONTRACT} from "./Constants.sol"; +import {IKnownCodesStorage} from "./interfaces/IKnownCodesStorage.sol"; +import {ISystemContract} from "./interfaces/ISystemContract.sol"; +import {Utils} from "./libraries/Utils.sol"; +import {SystemContractHelper} from "./libraries/SystemContractHelper.sol"; +import {COMPRESSOR_CONTRACT, L1_MESSENGER_CONTRACT} from "./Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The storage of this contract will basically serve as a mapping for the known code hashes. * @dev Code hash is not strictly a hash, it's a structure where the first byte denotes the version of the hash, * the second byte denotes whether the contract is constructed, and the next two bytes denote the length in 32-byte words. * words. And then the next 28 bytes is the truncated hash. */ -contract KnownCodesStorage is IKnownCodesStorage { - modifier onlyBootloader() { - require(msg.sender == BOOTLOADER_FORMAL_ADDRESS, "Callable only by the bootloader"); - _; - } - - modifier onlyBytecodeCompressor() { - require(msg.sender == address(BYTECODE_COMPRESSOR_CONTRACT), "Callable only by the bytecode compressor"); +contract KnownCodesStorage is IKnownCodesStorage, ISystemContract { + modifier onlyCompressor() { + require(msg.sender == address(COMPRESSOR_CONTRACT), "Callable only by the compressor"); _; } /// @notice The method that is used by the bootloader to mark several bytecode hashes as known. /// @param _shouldSendToL1 Whether the bytecode should be sent on L1. /// @param _hashes Hashes of the bytecodes to be marked as known. - function markFactoryDeps(bool _shouldSendToL1, bytes32[] calldata _hashes) external onlyBootloader { + function markFactoryDeps(bool _shouldSendToL1, bytes32[] calldata _hashes) external onlyCallFromBootloader { unchecked { uint256 hashesLen = _hashes.length; for (uint256 i = 0; i < hashesLen; ++i) { - uint256 codeLengthInBytes = Utils.bytecodeLenInBytes(_hashes[i]); - _markBytecodeAsPublished(_hashes[i], 0, codeLengthInBytes, _shouldSendToL1); + _markBytecodeAsPublished(_hashes[i], _shouldSendToL1); } } } @@ -41,32 +37,19 @@ contract KnownCodesStorage is IKnownCodesStorage { /// @notice The method used to mark a single bytecode hash as known. /// @dev Only trusted contacts can call this method, currently only the bytecode compressor. /// @param _bytecodeHash The hash of the bytecode that is marked as known. - /// @param _l1PreimageHash The hash of the preimage is be shown on L1 if zero - the full bytecode will be shown. - /// @param _l1PreimageBytesLen The length of the preimage in bytes. - function markBytecodeAsPublished( - bytes32 _bytecodeHash, - bytes32 _l1PreimageHash, - uint256 _l1PreimageBytesLen - ) external onlyBytecodeCompressor { - _markBytecodeAsPublished(_bytecodeHash, _l1PreimageHash, _l1PreimageBytesLen, false); + function markBytecodeAsPublished(bytes32 _bytecodeHash) external onlyCompressor { + _markBytecodeAsPublished(_bytecodeHash, false); } /// @notice The method used to mark a single bytecode hash as known /// @param _bytecodeHash The hash of the bytecode that is marked as known - /// @param _l1PreimageHash The hash of the preimage to be shown on L1 if zero - the full bytecode will be shown - /// @param _l1PreimageBytesLen The length of the preimage in bytes /// @param _shouldSendToL1 Whether the bytecode should be sent on L1 - function _markBytecodeAsPublished( - bytes32 _bytecodeHash, - bytes32 _l1PreimageHash, - uint256 _l1PreimageBytesLen, - bool _shouldSendToL1 - ) internal { + function _markBytecodeAsPublished(bytes32 _bytecodeHash, bool _shouldSendToL1) internal { if (getMarker(_bytecodeHash) == 0) { _validateBytecode(_bytecodeHash); if (_shouldSendToL1) { - _sendBytecodeToL1(_bytecodeHash, _l1PreimageHash, _l1PreimageBytesLen); + L1_MESSENGER_CONTRACT.requestBytecodeL1Publication(_bytecodeHash); } // Save as known, to not resend the log to L1 @@ -78,46 +61,6 @@ contract KnownCodesStorage is IKnownCodesStorage { } } - /// @notice Method used for sending the bytecode (preimage for the bytecode hash) on L1. - /// @dev While bytecode must be visible to L1 observers, it's not necessary to disclose the whole raw bytecode. - /// To achieve this, it's possible to utilize compressed data using a known compression algorithm. Thus, the - /// L1 preimage data may differ from the raw bytecode. - /// @param _bytecodeHash The hash of the bytecode that is marked as known. - /// @param _l1PreimageHash The hash of the preimage to be shown on L1 if zero - the full bytecode will be shown. - /// @param _l1PreimageBytesLen The length of the preimage in bytes. - /// @dev This method sends a single L2->L1 log with the bytecodeHash and l1PreimageHash. It is the responsibility of the L1 - /// smart contracts to make sure that the preimage for this bytecode hash has been shown. - function _sendBytecodeToL1(bytes32 _bytecodeHash, bytes32 _l1PreimageHash, uint256 _l1PreimageBytesLen) internal { - // Burn gas to cover the cost of publishing pubdata on L1 - - // Get the cost of 1 pubdata byte in gas - uint256 meta = SystemContractHelper.getZkSyncMetaBytes(); - uint256 pricePerPubdataByteInGas = SystemContractHelper.getGasPerPubdataByteFromMeta(meta); - - // Calculate how many bytes of calldata will need to be transferred to L1. - // We published the data as ABI-encoded `bytes`, so we pay for: - // - bytecode length in bytes, rounded up to a multiple of 32 (it always is, because of the bytecode format) - // - 32 bytes of encoded offset - // - 32 bytes of encoded length - - uint256 gasToPay = (_l1PreimageBytesLen + 64) * pricePerPubdataByteInGas; - _burnGas(Utils.safeCastToU32(gasToPay)); - - // Send a log to L1 that bytecode should be known. - // L1 smart contract will check the availability of bytecodeHash preimage. - SystemContractHelper.toL1(true, _bytecodeHash, _l1PreimageHash); - } - - /// @notice Method used for burning a certain amount of gas - /// @param _gasToPay The number of gas to burn. - function _burnGas(uint32 _gasToPay) internal view { - bool precompileCallSuccess = SystemContractHelper.precompileCall( - 0, // The precompile parameters are formal ones. We only need the precompile call to burn gas. - _gasToPay - ); - require(precompileCallSuccess, "Failed to charge gas"); - } - /// @notice Returns the marker stored for a bytecode hash. 1 means that the bytecode hash is known /// and can be used for deploying contracts. 0 otherwise. function getMarker(bytes32 _hash) public view override returns (uint256 marker) { diff --git a/etc/system-contracts/contracts/L1Messenger.sol b/etc/system-contracts/contracts/L1Messenger.sol index 00363f14..47ee3265 100644 --- a/etc/system-contracts/contracts/L1Messenger.sol +++ b/etc/system-contracts/contracts/L1Messenger.sol @@ -1,13 +1,17 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; -import "./interfaces/IL1Messenger.sol"; -import "./libraries/SystemContractHelper.sol"; -import "./libraries/EfficientCall.sol"; +import {IL1Messenger, L2ToL1Log, L2_L1_LOGS_TREE_DEFAULT_LEAF_HASH, L2_TO_L1_LOG_SERIALIZE_SIZE, STATE_DIFF_COMPRESSION_VERSION_NUMBER} from "./interfaces/IL1Messenger.sol"; +import {ISystemContract} from "./interfaces/ISystemContract.sol"; +import {SystemContractHelper} from "./libraries/SystemContractHelper.sol"; +import {EfficientCall} from "./libraries/EfficientCall.sol"; +import {Utils} from "./libraries/Utils.sol"; +import {SystemLogKey, SYSTEM_CONTEXT_CONTRACT, KNOWN_CODE_STORAGE_CONTRACT, COMPRESSOR_CONTRACT, STATE_DIFF_ENTRY_SIZE, MAX_ALLOWED_PUBDATA_PER_BATCH, L2_TO_L1_LOGS_MERKLE_TREE_LEAVES} from "./Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice Smart contract for sending arbitrary length messages to L1 * @dev by default ZkSync can send fixed length messages on L1. * A fixed length message has 4 parameters `senderAddress` `isService`, `key`, `value`, @@ -18,39 +22,310 @@ import "./libraries/EfficientCall.sol"; * - The contract on L1 accepts all sent messages and if the message came from this system contract * it requires that the preimage of `value` be provided. */ -contract L1Messenger is IL1Messenger { - /// @notice Sends an arbitrary length message to L1. - /// @param _message The variable length message to be sent to L1. - /// @return hash The keccak256 hashed value of the message. +contract L1Messenger is IL1Messenger, ISystemContract { + /// @notice Sequential hash of logs sent in the current block. + /// @dev Will be reset at the end of the block to zero value. + bytes32 internal chainedLogsHash; + + /// @notice Number of logs sent in the current block. + /// @dev Will be reset at the end of the block to zero value. + uint256 internal numberOfLogsToProcess; + + /// @notice Sequential hash of hashes of the messages sent in the current block. + /// @dev Will be reset at the end of the block to zero value. + bytes32 internal chainedMessagesHash; + + /// @notice Sequential hash of bytecode hashes that needs to published + /// according to the current block execution invariant. + /// @dev Will be reset at the end of the block to zero value. + bytes32 internal chainedL1BytecodesRevealDataHash; + + /// The gas cost of processing one keccak256 round. + uint256 internal constant KECCAK_ROUND_GAS_COST = 40; + + /// The number of bytes processed in one keccak256 round. + uint256 internal constant KECCAK_ROUND_NUMBER_OF_BYTES = 136; + + /// The gas cost of calculation of keccak256 of bytes array of such length. + function keccakGasCost(uint256 _length) internal pure returns (uint256) { + return KECCAK_ROUND_GAS_COST * (_length / KECCAK_ROUND_NUMBER_OF_BYTES + 1); + } + + /// The gas cost of processing one sha256 round. + uint256 internal constant SHA256_ROUND_GAS_COST = 7; + + /// The number of bytes processed in one sha256 round. + uint256 internal constant SHA256_ROUND_NUMBER_OF_BYTES = 64; + + /// The gas cost of calculation of sha256 of bytes array of such length. + function sha256GasCost(uint256 _length) internal pure returns (uint256) { + return SHA256_ROUND_GAS_COST * ((_length + 8) / SHA256_ROUND_NUMBER_OF_BYTES + 1); + } + + /// @notice Sends L2ToL1Log. + /// @dev Can be called only by a system contract. + function sendL2ToL1Log( + bool _isService, + bytes32 _key, + bytes32 _value + ) external onlyCallFromSystemContract returns (uint256 logIdInMerkleTree) { + L2ToL1Log memory l2ToL1Log = L2ToL1Log({ + l2ShardId: 0, + isService: _isService, + txNumberInBlock: SYSTEM_CONTEXT_CONTRACT.txNumberInBlock(), + sender: msg.sender, + key: _key, + value: _value + }); + logIdInMerkleTree = _processL2ToL1Log(l2ToL1Log); + + // We need to charge cost of hashing, as it will be used in `publishPubdataAndClearState`: + // - keccakGasCost(L2_TO_L1_LOG_SERIALIZE_SIZE) and keccakGasCost(64) when reconstructing L2ToL1Log + // - at most 1 time keccakGasCost(64) when building the Merkle tree (as merkle tree can contain + // ~2*N nodes, where the first N nodes are leaves the hash of which is calculated on the previous step). + uint256 gasToPay = keccakGasCost(L2_TO_L1_LOG_SERIALIZE_SIZE) + 2 * keccakGasCost(64); + SystemContractHelper.burnGas(Utils.safeCastToU32(gasToPay)); + } + + /// @notice Internal function to send L2ToL1Log. + function _processL2ToL1Log(L2ToL1Log memory _l2ToL1Log) internal returns (uint256 logIdInMerkleTree) { + bytes32 hashedLog = keccak256( + abi.encodePacked( + _l2ToL1Log.l2ShardId, + _l2ToL1Log.isService, + _l2ToL1Log.txNumberInBlock, + _l2ToL1Log.sender, + _l2ToL1Log.key, + _l2ToL1Log.value + ) + ); + + chainedLogsHash = keccak256(abi.encode(chainedLogsHash, hashedLog)); + + logIdInMerkleTree = numberOfLogsToProcess; + numberOfLogsToProcess++; + + emit L2ToL1LogSent(_l2ToL1Log); + } + + /// @notice Public functionality to send messages to L1. function sendToL1(bytes calldata _message) external override returns (bytes32 hash) { + uint256 gasBeforeMessageHashing = gasleft(); hash = EfficientCall.keccak(_message); + uint256 gasSpentOnMessageHashing = gasBeforeMessageHashing - gasleft(); + + /// Store message record + chainedMessagesHash = keccak256(abi.encode(chainedMessagesHash, hash)); + + /// Store log record + L2ToL1Log memory l2ToL1Log = L2ToL1Log({ + l2ShardId: 0, + isService: true, + txNumberInBlock: SYSTEM_CONTEXT_CONTRACT.txNumberInBlock(), + sender: address(this), + key: bytes32(uint256(uint160(msg.sender))), + value: hash + }); + _processL2ToL1Log(l2ToL1Log); // Get cost of one byte pubdata in gas from context. uint256 meta = SystemContractHelper.getZkSyncMetaBytes(); uint32 gasPerPubdataBytes = SystemContractHelper.getGasPerPubdataByteFromMeta(meta); - // Calculate how many bytes of calldata will need to be transferred to L1. - // We published the data as ABI-encoded `bytes`, so we pay for: - // - message length in bytes, rounded up to a multiple of 32 - // - 32 bytes of encoded offset - // - 32 bytes of encoded length + uint256 pubdataLen; + unchecked { + // 4 bytes used to encode the length of the message (see `publishPubdataAndClearState`) + // L2_TO_L1_LOG_SERIALIZE_SIZE bytes used to encode L2ToL1Log + pubdataLen = 4 + _message.length + L2_TO_L1_LOG_SERIALIZE_SIZE; + } + + // We need to charge cost of hashing, as it will be used in `publishPubdataAndClearState`: + // - keccakGasCost(L2_TO_L1_LOG_SERIALIZE_SIZE) and keccakGasCost(64) when reconstructing L2ToL1Log + // - keccakGasCost(64) and gasSpentOnMessageHashing when reconstructing Messages + // - at most 1 time keccakGasCost(64) when building the Merkle tree (as merkle tree can contain + // ~2*N nodes, where the first N nodes are leaves the hash of which is calculated on the previous step). + uint256 gasToPay = pubdataLen * + gasPerPubdataBytes + + keccakGasCost(L2_TO_L1_LOG_SERIALIZE_SIZE) + + 3 * + keccakGasCost(64) + + gasSpentOnMessageHashing; + SystemContractHelper.burnGas(Utils.safeCastToU32(gasToPay)); + + emit L1MessageSent(msg.sender, hash, _message); + } + + /// @dev Can be called only by KnownCodesStorage system contract. + function requestBytecodeL1Publication( + bytes32 _bytecodeHash + ) external override onlyCallFrom(address(KNOWN_CODE_STORAGE_CONTRACT)) { + chainedL1BytecodesRevealDataHash = keccak256(abi.encode(chainedL1BytecodesRevealDataHash, _bytecodeHash)); + + uint256 bytecodeLen = Utils.bytecodeLenInBytes(_bytecodeHash); + + // Get cost of one byte pubdata in gas from context. + uint256 meta = SystemContractHelper.getZkSyncMetaBytes(); + uint32 gasPerPubdataBytes = SystemContractHelper.getGasPerPubdataByteFromMeta(meta); uint256 pubdataLen; unchecked { - pubdataLen = ((_message.length + 31) / 32) * 32 + 64; + // 4 bytes used to encode the length of the bytecode (see `publishPubdataAndClearState`) + pubdataLen = 4 + bytecodeLen; } - uint256 gasToPay = pubdataLen * gasPerPubdataBytes; - // Call precompile to burn gas to cover the cost of publishing pubdata to L1. - uint256 precompileParams = SystemContractHelper.packPrecompileParams(0, 0, 0, 0, 0); - bool precompileCallSuccess = SystemContractHelper.precompileCall( - precompileParams, - Utils.safeCastToU32(gasToPay) + // We need to charge cost of hashing, as it will be used in `publishPubdataAndClearState` + uint256 gasToPay = pubdataLen * gasPerPubdataBytes + sha256GasCost(bytecodeLen) + keccakGasCost(64); + SystemContractHelper.burnGas(Utils.safeCastToU32(gasToPay)); + + emit BytecodeL1PublicationRequested(_bytecodeHash); + } + + /// @notice Verifies that the {_totalL2ToL1PubdataAndStateDiffs} reflects what occurred within the L1Batch and that + /// the compressed statediffs are equivalent to the full state diffs. + /// @param _totalL2ToL1PubdataAndStateDiffs The total pubdata and uncompressed state diffs of transactions that were + /// processed in the current L1 Batch. Pubdata consists of L2 to L1 Logs, messages, deployed bytecode, and state diffs. + /// @dev Function that should be called exactly once per L1 Batch by the bootloader. + /// @dev Checks that totalL2ToL1Pubdata is strictly packed data that should to be published to L1. + /// @dev The data passed in also contains the encoded state diffs to be checked again, however this is aux data that is not + /// part of the committed pubdata. + /// @dev Performs calculation of L2ToL1Logs merkle tree root, "sends" such root and keccak256(totalL2ToL1Pubdata) + /// to L1 using low-level (VM) L2Log. + function publishPubdataAndClearState( + bytes calldata _totalL2ToL1PubdataAndStateDiffs + ) external onlyCallFromBootloader { + uint256 calldataPtr = 0; + + /// Check logs + uint32 numberOfL2ToL1Logs = uint32(bytes4(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 4])); + require(numberOfL2ToL1Logs <= L2_TO_L1_LOGS_MERKLE_TREE_LEAVES, "Too many L2->L1 logs"); + calldataPtr += 4; + + bytes32[] memory l2ToL1LogsTreeArray = new bytes32[](L2_TO_L1_LOGS_MERKLE_TREE_LEAVES); + bytes32 reconstructedChainedLogsHash; + for (uint256 i = 0; i < numberOfL2ToL1Logs; ++i) { + bytes32 hashedLog = EfficientCall.keccak( + _totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + L2_TO_L1_LOG_SERIALIZE_SIZE] + ); + calldataPtr += L2_TO_L1_LOG_SERIALIZE_SIZE; + l2ToL1LogsTreeArray[i] = hashedLog; + reconstructedChainedLogsHash = keccak256(abi.encode(reconstructedChainedLogsHash, hashedLog)); + } + require( + reconstructedChainedLogsHash == chainedLogsHash, + "reconstructedChainedLogsHash is not equal to chainedLogsHash" ); - require(precompileCallSuccess, "Failed to burn gas"); + for (uint256 i = numberOfL2ToL1Logs; i < L2_TO_L1_LOGS_MERKLE_TREE_LEAVES; ++i) { + l2ToL1LogsTreeArray[i] = L2_L1_LOGS_TREE_DEFAULT_LEAF_HASH; + } + uint256 nodesOnCurrentLevel = L2_TO_L1_LOGS_MERKLE_TREE_LEAVES; + while (nodesOnCurrentLevel > 1) { + nodesOnCurrentLevel /= 2; + for (uint256 i = 0; i < nodesOnCurrentLevel; ++i) { + l2ToL1LogsTreeArray[i] = keccak256( + abi.encode(l2ToL1LogsTreeArray[2 * i], l2ToL1LogsTreeArray[2 * i + 1]) + ); + } + } + bytes32 l2ToL1LogsTreeRoot = l2ToL1LogsTreeArray[0]; - SystemContractHelper.toL1(true, bytes32(uint256(uint160(msg.sender))), hash); + /// Check messages + uint32 numberOfMessages = uint32(bytes4(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 4])); + calldataPtr += 4; + bytes32 reconstructedChainedMessagesHash; + for (uint256 i = 0; i < numberOfMessages; ++i) { + uint32 currentMessageLength = uint32(bytes4(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 4])); + calldataPtr += 4; + bytes32 hashedMessage = EfficientCall.keccak( + _totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + currentMessageLength] + ); + calldataPtr += currentMessageLength; + reconstructedChainedMessagesHash = keccak256(abi.encode(reconstructedChainedMessagesHash, hashedMessage)); + } + require( + reconstructedChainedMessagesHash == chainedMessagesHash, + "reconstructedChainedMessagesHash is not equal to chainedMessagesHash" + ); - emit L1MessageSent(msg.sender, hash, _message); + /// Check bytecodes + uint32 numberOfBytecodes = uint32(bytes4(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 4])); + calldataPtr += 4; + bytes32 reconstructedChainedL1BytecodesRevealDataHash; + for (uint256 i = 0; i < numberOfBytecodes; ++i) { + uint32 currentBytecodeLength = uint32( + bytes4(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 4]) + ); + calldataPtr += 4; + reconstructedChainedL1BytecodesRevealDataHash = keccak256( + abi.encode( + reconstructedChainedL1BytecodesRevealDataHash, + Utils.hashL2Bytecode( + _totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + currentBytecodeLength] + ) + ) + ); + calldataPtr += currentBytecodeLength; + } + require( + reconstructedChainedL1BytecodesRevealDataHash == chainedL1BytecodesRevealDataHash, + "reconstructedChainedL1BytecodesRevealDataHash is not equal to chainedL1BytecodesRevealDataHash" + ); + + /// Check State Diffs + /// encoding is as follows: + /// header (1 byte version, 3 bytes total len of compressed, 1 byte enumeration index size, 2 bytes number of initial writes) + /// body (N bytes of initial writes [32 byte derived key || compressed value], M bytes repeated writes [enumeration index || compressed value]) + /// encoded state diffs: [20bytes address][32bytes key][32bytes derived key][8bytes enum index][32bytes initial value][32bytes final value] + require( + uint256(uint8(bytes1(_totalL2ToL1PubdataAndStateDiffs[calldataPtr]))) == + STATE_DIFF_COMPRESSION_VERSION_NUMBER, + "state diff compression version mismatch" + ); + calldataPtr++; + + uint24 compressedStateDiffSize = uint24(bytes3(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 3])); + calldataPtr += 3; + + uint8 enumerationIndexSize = uint8(bytes1(_totalL2ToL1PubdataAndStateDiffs[calldataPtr])); + calldataPtr++; + + bytes calldata compressedStateDiffs = _totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + + compressedStateDiffSize]; + calldataPtr += compressedStateDiffSize; + + bytes calldata totalL2ToL1Pubdata = _totalL2ToL1PubdataAndStateDiffs[:calldataPtr]; + + require(calldataPtr <= MAX_ALLOWED_PUBDATA_PER_BATCH, "L1 Messenger pubdata is too long"); + + uint32 numberOfStateDiffs = uint32(bytes4(_totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + 4])); + calldataPtr += 4; + + bytes calldata stateDiffs = _totalL2ToL1PubdataAndStateDiffs[calldataPtr:calldataPtr + + (numberOfStateDiffs * STATE_DIFF_ENTRY_SIZE)]; + calldataPtr += numberOfStateDiffs * STATE_DIFF_ENTRY_SIZE; + + bytes32 stateDiffHash = COMPRESSOR_CONTRACT.verifyCompressedStateDiffs( + numberOfStateDiffs, + enumerationIndexSize, + stateDiffs, + compressedStateDiffs + ); + + /// Check for calldata strict format + require(calldataPtr == _totalL2ToL1PubdataAndStateDiffs.length, "Extra data in the totalL2ToL1Pubdata array"); + + /// Native (VM) L2 to L1 log + SystemContractHelper.toL1(true, bytes32(uint256(SystemLogKey.L2_TO_L1_LOGS_TREE_ROOT_KEY)), l2ToL1LogsTreeRoot); + SystemContractHelper.toL1( + true, + bytes32(uint256(SystemLogKey.TOTAL_L2_TO_L1_PUBDATA_KEY)), + EfficientCall.keccak(totalL2ToL1Pubdata) + ); + SystemContractHelper.toL1(true, bytes32(uint256(SystemLogKey.STATE_DIFF_HASH_KEY)), stateDiffHash); + + /// Clear logs state + chainedLogsHash = bytes32(0); + numberOfLogsToProcess = 0; + chainedMessagesHash = bytes32(0); + chainedL1BytecodesRevealDataHash = bytes32(0); } } diff --git a/etc/system-contracts/contracts/L2EthToken.sol b/etc/system-contracts/contracts/L2EthToken.sol index d59a8fb6..fbd63ae2 100644 --- a/etc/system-contracts/contracts/L2EthToken.sol +++ b/etc/system-contracts/contracts/L2EthToken.sol @@ -1,31 +1,27 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import {IEthToken} from "./interfaces/IEthToken.sol"; +import {ISystemContract} from "./interfaces/ISystemContract.sol"; import {MSG_VALUE_SYSTEM_CONTRACT, DEPLOYER_SYSTEM_CONTRACT, BOOTLOADER_FORMAL_ADDRESS, L1_MESSENGER_CONTRACT} from "./Constants.sol"; -import {SystemContractHelper} from "./libraries/SystemContractHelper.sol"; import {IMailbox} from "./interfaces/IMailbox.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice Native ETH contract. * @dev It does NOT provide interfaces for personal interaction with tokens like `transfer`, `approve`, and `transferFrom`. * Instead, this contract is used by the bootloader and `MsgValueSimulator`/`ContractDeployer` system contracts * to perform the balance changes while simulating the `msg.value` Ethereum behavior. */ -contract L2EthToken is IEthToken { +contract L2EthToken is IEthToken, ISystemContract { /// @notice The balances of the users. - mapping(address => uint256) balance; + mapping(address => uint256) internal balance; /// @notice The total amount of tokens that have been minted. uint256 public override totalSupply; - modifier onlyBootloader() { - require(msg.sender == BOOTLOADER_FORMAL_ADDRESS, "Callable only by the bootloader"); - _; - } - /// @notice Transfer tokens from one address to another. /// @param _from The address to transfer the ETH from. /// @param _to The address to transfer the ETH to. @@ -65,7 +61,7 @@ contract L2EthToken is IEthToken { /// @dev This method is only callable by the bootloader. /// @param _account The address which to mint the funds to. /// @param _amount The amount of ETH in wei to be minted. - function mint(address _account, uint256 _amount) external override onlyBootloader { + function mint(address _account, uint256 _amount) external override onlyCallFromBootloader { totalSupply += _amount; balance[_account] += _amount; emit Mint(_account, _amount); diff --git a/etc/system-contracts/contracts/MsgValueSimulator.sol b/etc/system-contracts/contracts/MsgValueSimulator.sol index 5d66c304..07ed23d4 100644 --- a/etc/system-contracts/contracts/MsgValueSimulator.sol +++ b/etc/system-contracts/contracts/MsgValueSimulator.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./libraries/Utils.sol"; import "./libraries/EfficientCall.sol"; @@ -10,6 +10,7 @@ import {MSG_VALUE_SIMULATOR_IS_SYSTEM_BIT, ETH_TOKEN_SYSTEM_CONTRACT} from "./Co /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The contract responsible for simulating transactions with `msg.value` inside zkEVM. * @dev It accepts value and whether the call should be system in the first extraAbi param and * the address to call in the second extraAbi param, transfers the funds and uses `mimicCall` to continue the diff --git a/etc/system-contracts/contracts/NonceHolder.sol b/etc/system-contracts/contracts/NonceHolder.sol index e74a5664..b2775f1c 100644 --- a/etc/system-contracts/contracts/NonceHolder.sol +++ b/etc/system-contracts/contracts/NonceHolder.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./interfaces/INonceHolder.sol"; import "./interfaces/IContractDeployer.sol"; @@ -9,6 +9,7 @@ import {DEPLOYER_SYSTEM_CONTRACT} from "./Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice A contract used for managing nonces for accounts. Together with bootloader, * this contract ensures that the pair (sender, nonce) is always unique, ensuring * unique transaction hashes. @@ -131,8 +132,11 @@ contract NonceHolder is INonceHolder, ISystemContract { /// @notice Increments the deployment nonce for the account and returns the previous one. /// @param _address The address of the account which to return the deploy nonce for. /// @return prevDeploymentNonce The deployment nonce at the time this function is called. - function incrementDeploymentNonce(address _address) external onlySystemCall returns (uint256 prevDeploymentNonce) { - require(msg.sender == address(DEPLOYER_SYSTEM_CONTRACT), ""); + function incrementDeploymentNonce(address _address) external returns (uint256 prevDeploymentNonce) { + require( + msg.sender == address(DEPLOYER_SYSTEM_CONTRACT), + "Only the contract deployer can increment the deployment nonce" + ); uint256 addressAsKey = uint256(uint160(_address)); uint256 oldRawNonce = rawNonces[addressAsKey]; diff --git a/etc/system-contracts/contracts/SystemContext.sol b/etc/system-contracts/contracts/SystemContext.sol index 5d801f34..67f9248e 100644 --- a/etc/system-contracts/contracts/SystemContext.sol +++ b/etc/system-contracts/contracts/SystemContext.sol @@ -1,23 +1,20 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import {ISystemContext} from "./interfaces/ISystemContext.sol"; +import {ISystemContract} from "./interfaces/ISystemContract.sol"; import {ISystemContextDeprecated} from "./interfaces/ISystemContextDeprecated.sol"; import {SystemContractHelper} from "./libraries/SystemContractHelper.sol"; -import {BOOTLOADER_FORMAL_ADDRESS} from "./Constants.sol"; +import {BOOTLOADER_FORMAL_ADDRESS, SystemLogKey} from "./Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice Contract that stores some of the context variables, that may be either * block-scoped, tx-scoped or system-wide. */ -contract SystemContext is ISystemContext, ISystemContextDeprecated { - modifier onlyBootloader() { - require(msg.sender == BOOTLOADER_FORMAL_ADDRESS, "Callable only by the bootloader"); - _; - } - +contract SystemContext is ISystemContext, ISystemContextDeprecated, ISystemContract { /// @notice The number of latest L2 blocks to store. /// @dev EVM requires us to be able to query the hashes of previous 256 blocks. /// We could either: @@ -64,11 +61,11 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { bytes32 internal currentL2BlockTxsRollingHash; /// @notice The hashes of L2 blocks. - /// @dev It stores block hashes for previous L2 blocks. Note, in order to make publishing the hashes - /// of the miniblocks cheaper, we only store the previous MINIBLOCK_HASHES_TO_STORE ones. Since whenever we need to publish a state + /// @dev It stores block hashes for previous L2 blocks. Note, in order to make publishing the hashes + /// of the miniblocks cheaper, we only store the previous MINIBLOCK_HASHES_TO_STORE ones. Since whenever we need to publish a state /// diff, a pair of is published and for cached keys only 8-byte id is used instead of 32 bytes. /// By having this data in a cyclic array of MINIBLOCK_HASHES_TO_STORE blocks, we bring the costs down by 40% (i.e. 40 bytes per miniblock instead of 64 bytes). - /// @dev The hash of a miniblock with number N would be stored under slot N%MINIBLOCK_HASHES_TO_STORE. + /// @dev The hash of a miniblock with number N would be stored under slot N%MINIBLOCK_HASHES_TO_STORE. /// @dev Hashes of the blocks older than the ones which are stored here can be calculated as _calculateLegacyL2BlockHash(blockNumber). bytes32[MINIBLOCK_HASHES_TO_STORE] internal l2BlockHash; @@ -82,22 +79,25 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { /// @notice The information about the virtual blocks upgrade, which tracks when the migration to the L2 blocks has started and finished. VirtualBlockUpgradeInfo internal virtualBlockUpgradeInfo; + /// @notice Number of current transaction in block. + uint16 public txNumberInBlock; + /// @notice Set the current tx origin. /// @param _newOrigin The new tx origin. - function setTxOrigin(address _newOrigin) external onlyBootloader { + function setTxOrigin(address _newOrigin) external onlyCallFromBootloader { origin = _newOrigin; } /// @notice Set the the current gas price. /// @param _gasPrice The new tx gasPrice. - function setGasPrice(uint256 _gasPrice) external onlyBootloader { + function setGasPrice(uint256 _gasPrice) external onlyCallFromBootloader { gasPrice = _gasPrice; } /// @notice The method that emulates `blockhash` opcode in EVM. /// @dev Just like the blockhash in the EVM, it returns bytes32(0), /// when queried about hashes that are older than 256 blocks ago. - /// @dev Since zksolc compiler calls this method to emulate `blockhash`, + /// @dev Since zksolc compiler calls this method to emulate `blockhash`, /// its signature can not be changed to `getL2BlockHashEVM`. /// @return hash The blockhash of the block with the given number. function getBlockHashEVM(uint256 _block) external view returns (bytes32 hash) { @@ -107,7 +107,7 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { // Due to virtual blocks upgrade, we'll have to use the following logic for retreiving the blockhash: // 1. If the block number is out of the 256-block supported range, return 0. - // 2. If the block was created before the upgrade for the virtual blocks (i.e. there we used to use hashes of the batches), + // 2. If the block was created before the upgrade for the virtual blocks (i.e. there we used to use hashes of the batches), // we return the hash of the batch. // 3. If the block was created after the day when the virtual blocks have caught up with the L2 blocks, i.e. // all the information which is returned for users should be for L2 blocks, we return the hash of the corresponding L2 block. @@ -118,11 +118,14 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { // Note, that we will get into this branch only for a brief moment of time, right after the upgrade // for virtual blocks before 256 virtual blocks are produced. hash = batchHash[_block]; - } else if (_block >= currentVirtualBlockUpgradeInfo.virtualBlockFinishL2Block && currentVirtualBlockUpgradeInfo.virtualBlockFinishL2Block > 0) { + } else if ( + _block >= currentVirtualBlockUpgradeInfo.virtualBlockFinishL2Block && + currentVirtualBlockUpgradeInfo.virtualBlockFinishL2Block > 0 + ) { hash = _getLatest257L2blockHash(_block); } else { - // Important: we do not want this number to ever collide with the L2 block hash (either new or old one) and so - // that's why the legacy L2 blocks' hashes are keccak256(abi.encodePacked(uint32(_block))), while these are equivalent to + // Important: we do not want this number to ever collide with the L2 block hash (either new or old one) and so + // that's why the legacy L2 blocks' hashes are keccak256(abi.encodePacked(uint32(_block))), while these are equivalent to // keccak256(abi.encodePacked(_block)) hash = keccak256(abi.encode(_block)); } @@ -152,7 +155,7 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { } /// @notice Returns the current L2 block's number. - /// @dev Since zksolc compiler calls this method to emulate `block.number`, + /// @dev Since zksolc compiler calls this method to emulate `block.number`, /// its signature can not be changed to `getL2BlockNumber`. /// @return blockNumber The current L2 block's number. function getBlockNumber() public view returns (uint128) { @@ -160,7 +163,7 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { } /// @notice Returns the current L2 block's timestamp. - /// @dev Since zksolc compiler calls this method to emulate `block.timestamp`, + /// @dev Since zksolc compiler calls this method to emulate `block.timestamp`, /// its signature can not be changed to `getL2BlockTimestamp`. /// @return timestamp The current L2 block's timestamp. function getBlockTimestamp() public view returns (uint128) { @@ -195,12 +198,10 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { return keccak256(abi.encode(_blockNumber, _blockTimestamp, _prevL2BlockHash, _blockTxsRollingHash)); } - /// @notice Calculates the legacy block hash of L2 block, which were used before the upgrade where + /// @notice Calculates the legacy block hash of L2 block, which were used before the upgrade where /// the advanced block hashes were introduced. /// @param _blockNumber The number of the L2 block. - function _calculateLegacyL2BlockHash( - uint128 _blockNumber - ) internal pure returns (bytes32) { + function _calculateLegacyL2BlockHash(uint128 _blockNumber) internal pure returns (bytes32) { return keccak256(abi.encodePacked(uint32(_blockNumber))); } @@ -208,25 +209,21 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { /// @param _l2BlockNumber The number of the new L2 block. /// @param _expectedPrevL2BlockHash The expected hash of the previous L2 block. /// @param _isFirstInBatch Whether this method is called for the first time in the batch. - function _upgradeL2Blocks( - uint128 _l2BlockNumber, - bytes32 _expectedPrevL2BlockHash, - bool _isFirstInBatch - ) internal { + function _upgradeL2Blocks(uint128 _l2BlockNumber, bytes32 _expectedPrevL2BlockHash, bool _isFirstInBatch) internal { require(_isFirstInBatch, "Upgrade transaction must be first"); - + // This is how it will be commonly done in practice, but it will simplify some logic later require(_l2BlockNumber > 0, "L2 block number is never expected to be zero"); - + unchecked { - bytes32 correctPrevBlockHash = _calculateLegacyL2BlockHash(uint128(_l2BlockNumber - 1)); + bytes32 correctPrevBlockHash = _calculateLegacyL2BlockHash(_l2BlockNumber - 1); require(correctPrevBlockHash == _expectedPrevL2BlockHash, "The previous L2 block hash is incorrect"); - // Whenever we'll be queried about the hashes of the blocks before the upgrade, + // Whenever we'll be queried about the hashes of the blocks before the upgrade, // we'll use batches' hashes, so we don't need to store 256 previous hashes. // However, we do need to store the last previous hash in order to be able to correctly calculate the // hash of the new L2 block. - _setL2BlockHash(uint128(_l2BlockNumber - 1), correctPrevBlockHash); + _setL2BlockHash(_l2BlockNumber - 1, correctPrevBlockHash); } } @@ -239,11 +236,11 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { uint128 _maxVirtualBlocksToCreate, uint128 _newTimestamp ) internal { - if(virtualBlockUpgradeInfo.virtualBlockFinishL2Block != 0) { + if (virtualBlockUpgradeInfo.virtualBlockFinishL2Block != 0) { // No need to to do anything about virtual blocks anymore // All the info is the same as for L2 blocks. currentVirtualL2BlockInfo = currentL2BlockInfo; - return; + return; } BlockInfo memory virtualBlockInfo = currentVirtualL2BlockInfo; @@ -252,7 +249,7 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { uint128 currentBatchNumber = currentBatchInfo.number; // The virtual block is set for the first time. We can count it as 1 creation of a virtual block. - // Note, that when setting the virtual block number we use the batch number to make a smoother upgrade from batch number to + // Note, that when setting the virtual block number we use the batch number to make a smoother upgrade from batch number to // the L2 block number. virtualBlockInfo.number = currentBatchNumber; // Remembering the batch number on which the upgrade to the virtual blocks has been done. @@ -261,7 +258,7 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { require(_maxVirtualBlocksToCreate > 0, "Can't initialize the first virtual block"); _maxVirtualBlocksToCreate -= 1; } else if (_maxVirtualBlocksToCreate == 0) { - // The virtual blocks have been already initialized, but the operator didn't ask to create + // The virtual blocks have been already initialized, but the operator didn't ask to create // any new virtual blocks. So we can just return. return; } @@ -271,13 +268,13 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { // The virtual block number must never exceed the L2 block number. // We do not use a `require` here, since the virtual blocks are a temporary solution to let the Solidity's `block.number` - // catch up with the L2 block number and so the situation where virtualBlockInfo.number starts getting larger + // catch up with the L2 block number and so the situation where virtualBlockInfo.number starts getting larger // than _l2BlockNumber is expected once virtual blocks have caught up the L2 blocks. if (virtualBlockInfo.number >= _l2BlockNumber) { virtualBlockUpgradeInfo.virtualBlockFinishL2Block = _l2BlockNumber; virtualBlockInfo.number = _l2BlockNumber; } - + currentVirtualL2BlockInfo = virtualBlockInfo; } @@ -285,16 +282,9 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { /// @param _l2BlockNumber The number of the new L2 block. /// @param _l2BlockTimestamp The timestamp of the new L2 block. /// @param _prevL2BlockHash The hash of the previous L2 block. - function _setNewL2BlockData( - uint128 _l2BlockNumber, - uint128 _l2BlockTimestamp, - bytes32 _prevL2BlockHash - ) internal { + function _setNewL2BlockData(uint128 _l2BlockNumber, uint128 _l2BlockTimestamp, bytes32 _prevL2BlockHash) internal { // In the unsafe version we do not check that the block data is correct - currentL2BlockInfo = BlockInfo({ - number: _l2BlockNumber, - timestamp: _l2BlockTimestamp - }); + currentL2BlockInfo = BlockInfo({number: _l2BlockNumber, timestamp: _l2BlockTimestamp}); // It is always assumed in production that _l2BlockNumber > 0 _setL2BlockHash(_l2BlockNumber - 1, _prevL2BlockHash); @@ -305,64 +295,69 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { /// @notice Sets the current block number and timestamp of the L2 block. /// @dev Called by the bootloader before each transaction. This is needed to ensure - /// that the data about the block is consistent with the sequencer. - /// @dev If the new block number is the same as the current one, we ensure that the block's data is + /// that the data about the block is consistent with the sequencer. + /// @dev If the new block number is the same as the current one, we ensure that the block's data is /// consistent with the one in the current block. - /// @dev If the new block number is greater than the current one by 1, + /// @dev If the new block number is greater than the current one by 1, /// then we ensure that timestamp has increased. - /// @dev If the currently stored number is 0, we assume that it is the first upgrade transaction + /// @dev If the currently stored number is 0, we assume that it is the first upgrade transaction /// and so we will fill up the old data. /// @param _l2BlockNumber The number of the new L2 block. /// @param _l2BlockTimestamp The timestamp of the new L2 block. /// @param _expectedPrevL2BlockHash The expected hash of the previous L2 block. /// @param _isFirstInBatch Whether this method is called for the first time in the batch. /// @param _maxVirtualBlocksToCreate The maximum number of virtual block to create with this L2 block. - /// @dev It is a strict requirement that a new virtual block is created at the start of the batch. + /// @dev It is a strict requirement that a new virtual block is created at the start of the batch. /// @dev It is also enforced that the number of the current virtual L2 block can not exceed the number of the L2 block. function setL2Block( - uint128 _l2BlockNumber, + uint128 _l2BlockNumber, uint128 _l2BlockTimestamp, bytes32 _expectedPrevL2BlockHash, bool _isFirstInBatch, uint128 _maxVirtualBlocksToCreate - ) external onlyBootloader { + ) external onlyCallFromBootloader { // We check that the timestamp of the L2 block is consistent with the timestamp of the batch. - if(_isFirstInBatch) { + if (_isFirstInBatch) { uint128 currentBatchTimestamp = currentBatchInfo.timestamp; - require(_l2BlockTimestamp >= currentBatchTimestamp, "The timestamp of the L2 block must be greater than or equal to the timestamp of the current batch"); + require( + _l2BlockTimestamp >= currentBatchTimestamp, + "The timestamp of the L2 block must be greater than or equal to the timestamp of the current batch" + ); require(_maxVirtualBlocksToCreate > 0, "There must be a virtual block created at the start of the batch"); } (uint128 currentL2BlockNumber, uint128 currentL2BlockTimestamp) = getL2BlockNumberAndTimestamp(); if (currentL2BlockNumber == 0 && currentL2BlockTimestamp == 0) { - // Since currentL2BlockNumber and currentL2BlockTimestamp are zero it means that it is + // Since currentL2BlockNumber and currentL2BlockTimestamp are zero it means that it is // the first ever batch with L2 blocks, so we need to initialize those. - _upgradeL2Blocks( - _l2BlockNumber, - _expectedPrevL2BlockHash, - _isFirstInBatch - ); + _upgradeL2Blocks(_l2BlockNumber, _expectedPrevL2BlockHash, _isFirstInBatch); _setNewL2BlockData(_l2BlockNumber, _l2BlockTimestamp, _expectedPrevL2BlockHash); } else if (currentL2BlockNumber == _l2BlockNumber) { require(!_isFirstInBatch, "Can not reuse L2 block number from the previous batch"); require(currentL2BlockTimestamp == _l2BlockTimestamp, "The timestamp of the same L2 block must be same"); - require(_expectedPrevL2BlockHash == _getLatest257L2blockHash(_l2BlockNumber - 1), "The previous hash of the same L2 block must be same"); + require( + _expectedPrevL2BlockHash == _getLatest257L2blockHash(_l2BlockNumber - 1), + "The previous hash of the same L2 block must be same" + ); require(_maxVirtualBlocksToCreate == 0, "Can not create virtual blocks in the middle of the miniblock"); } else if (currentL2BlockNumber + 1 == _l2BlockNumber) { // From the checks in _upgradeL2Blocks it is known that currentL2BlockNumber can not be 0 bytes32 prevL2BlockHash = _getLatest257L2blockHash(currentL2BlockNumber - 1); bytes32 pendingL2BlockHash = _calculateL2BlockHash( - currentL2BlockNumber, - currentL2BlockTimestamp, - prevL2BlockHash, + currentL2BlockNumber, + currentL2BlockTimestamp, + prevL2BlockHash, currentL2BlockTxsRollingHash ); require(_expectedPrevL2BlockHash == pendingL2BlockHash, "The current L2 block hash is incorrect"); - require(_l2BlockTimestamp > currentL2BlockTimestamp, "The timestamp of the new L2 block must be greater than the timestamp of the previous L2 block"); + require( + _l2BlockTimestamp > currentL2BlockTimestamp, + "The timestamp of the new L2 block must be greater than the timestamp of the previous L2 block" + ); // Since the new block is created, we'll clear out the rolling hash _setNewL2BlockData(_l2BlockNumber, _l2BlockTimestamp, _expectedPrevL2BlockHash); @@ -373,37 +368,39 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { _setVirtualBlock(_l2BlockNumber, _maxVirtualBlocksToCreate, _l2BlockTimestamp); } + /// @notice Appends the transaction hash to the rolling hash of the current L2 block. + /// @param _txHash The hash of the transaction. + function appendTransactionToCurrentL2Block(bytes32 _txHash) external onlyCallFromBootloader { + currentL2BlockTxsRollingHash = keccak256(abi.encode(currentL2BlockTxsRollingHash, _txHash)); + } + /// @notice Publishes L2->L1 logs needed to verify the validity of this batch on L1. /// @dev Should be called at the end of the current batch. - function publishBatchDataToL1() external onlyBootloader { + function publishTimestampDataToL1() external onlyCallFromBootloader { (uint128 currentBatchNumber, uint128 currentBatchTimestamp) = getBatchNumberAndTimestamp(); (, uint128 currentL2BlockTimestamp) = getL2BlockNumberAndTimestamp(); // The structure of the "setNewBatch" implies that currentBatchNumber > 0, but we still double check it require(currentBatchNumber > 0, "The current batch number must be greater than 0"); - bytes32 prevBatchHash = batchHash[currentBatchNumber - 1]; // In order to spend less pubdata, the packed version is published uint256 packedTimestamps = (uint256(currentBatchTimestamp) << 128) | currentL2BlockTimestamp; - SystemContractHelper.toL1(false, bytes32(packedTimestamps), prevBatchHash); - } - - /// @notice Appends the transaction hash to the rolling hash of the current L2 block. - /// @param _txHash The hash of the transaction. - function appendTransactionToCurrentL2Block( - bytes32 _txHash - ) external onlyBootloader { - currentL2BlockTxsRollingHash = keccak256(abi.encode(currentL2BlockTxsRollingHash, _txHash)); + SystemContractHelper.toL1( + false, + bytes32(uint256(SystemLogKey.PACKED_BATCH_AND_L2_BLOCK_TIMESTAMP_KEY)), + bytes32(packedTimestamps) + ); } /// @notice Ensures that the timestamp of the batch is greater than the timestamp of the last L2 block. /// @param _newTimestamp The timestamp of the new batch. - function _ensureBatchConsistentWithL2Block( - uint128 _newTimestamp - ) internal view { + function _ensureBatchConsistentWithL2Block(uint128 _newTimestamp) internal view { uint128 currentBlockTimestamp = currentL2BlockInfo.timestamp; - require(_newTimestamp > currentBlockTimestamp, "The timestamp of the batch must be greater than the timestamp of the previous block"); + require( + _newTimestamp > currentBlockTimestamp, + "The timestamp of the batch must be greater than the timestamp of the previous block" + ); } /// @notice Increments the current batch number and sets the new timestamp @@ -420,57 +417,66 @@ contract SystemContext is ISystemContext, ISystemContextDeprecated { uint128 _newTimestamp, uint128 _expectedNewNumber, uint256 _baseFee - ) external onlyBootloader { + ) external onlyCallFromBootloader { (uint128 previousBatchNumber, uint128 previousBatchTimestamp) = getBatchNumberAndTimestamp(); require(_newTimestamp > previousBatchTimestamp, "Timestamps should be incremental"); require(previousBatchNumber + 1 == _expectedNewNumber, "The provided block number is not correct"); - + _ensureBatchConsistentWithL2Block(_newTimestamp); batchHash[previousBatchNumber] = _prevBatchHash; // Setting new block number and timestamp - BlockInfo memory newBlockInfo = BlockInfo({ - number: previousBatchNumber + 1, - timestamp: _newTimestamp - }); + BlockInfo memory newBlockInfo = BlockInfo({number: previousBatchNumber + 1, timestamp: _newTimestamp}); currentBatchInfo = newBlockInfo; baseFee = _baseFee; + + // The correctness of this block hash: + SystemContractHelper.toL1(false, bytes32(uint256(SystemLogKey.PREV_BATCH_HASH_KEY)), _prevBatchHash); } /// @notice A testing method that manually sets the current blocks' number and timestamp. /// @dev Should be used only for testing / ethCalls and should never be used in production. - function unsafeOverrideBatch(uint256 _newTimestamp, uint256 _number, uint256 _baseFee) external onlyBootloader { - BlockInfo memory newBlockInfo = BlockInfo({ - number: uint128(_number), - timestamp: uint128(_newTimestamp) - }); + function unsafeOverrideBatch( + uint256 _newTimestamp, + uint256 _number, + uint256 _baseFee + ) external onlyCallFromBootloader { + BlockInfo memory newBlockInfo = BlockInfo({number: uint128(_number), timestamp: uint128(_newTimestamp)}); currentBatchInfo = newBlockInfo; baseFee = _baseFee; } + function incrementTxNumberInBatch() external onlyCallFromBootloader { + txNumberInBlock += 1; + } + + function resetTxNumberInBatch() external onlyCallFromBootloader { + txNumberInBlock = 0; + } + /*////////////////////////////////////////////////////////////// DEPRECATED METHODS //////////////////////////////////////////////////////////////*/ /// @notice Returns the current batch's number and timestamp. - /// @dev Deprecated in favor of getBatchNumberAndTimestamp. + /// @dev Deprecated in favor of getBatchNumberAndTimestamp. function currentBlockInfo() external view returns (uint256 blockInfo) { (uint128 blockNumber, uint128 blockTimestamp) = getBatchNumberAndTimestamp(); - blockInfo = uint256(blockNumber) << 128 | uint256(blockTimestamp); + blockInfo = (uint256(blockNumber) << 128) | uint256(blockTimestamp); } - + /// @notice Returns the current batch's number and timestamp. - /// @dev Deprecated in favor of getBatchNumberAndTimestamp. + /// @dev Deprecated in favor of getBatchNumberAndTimestamp. function getBlockNumberAndTimestamp() external view returns (uint256 blockNumber, uint256 blockTimestamp) { (blockNumber, blockTimestamp) = getBatchNumberAndTimestamp(); } /// @notice Returns the hash of the given batch. - /// @dev Deprecated in favor of getBatchHash. + /// @dev Deprecated in favor of getBatchHash. function blockHash(uint256 _blockNumber) external view returns (bytes32 hash) { hash = batchHash[_blockNumber]; } diff --git a/etc/system-contracts/contracts/interfaces/IAccount.sol b/etc/system-contracts/contracts/interfaces/IAccount.sol index c8ba36c9..fcbc0083 100644 --- a/etc/system-contracts/contracts/interfaces/IAccount.sol +++ b/etc/system-contracts/contracts/interfaces/IAccount.sol @@ -1,14 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "../libraries/TransactionHelper.sol"; -bytes4 constant ACCOUNT_VALIDATION_SUCCESS_MAGIC = IAccount - .validateTransaction - .selector; +bytes4 constant ACCOUNT_VALIDATION_SUCCESS_MAGIC = IAccount.validateTransaction.selector; -/// @notice This interface has been update from upstream: `executeTransaction` now returns the result bytes interface IAccount { /// @notice Called by the bootloader to validate that an account agrees to process the transaction /// (and potentially pay for it). @@ -26,29 +23,21 @@ interface IAccount { Transaction calldata _transaction ) external payable returns (bytes4 magic); + /// + /// FOUNDRY SUPPORT START + /// function executeTransaction( bytes32 _txHash, bytes32 _suggestedSignedHash, Transaction calldata _transaction - ) - external - payable - returns ( - /// - /// DEBUG SUPPORT START - /// - bytes memory returnData - ); - + ) external payable returns ( bytes memory returnData ); /// - /// DEBUG SUPPORT END + /// FOUNDRY SUPPORT END /// // There is no point in providing possible signed hash in the `executeTransactionFromOutside` method, // since it typically should not be trusted. - function executeTransactionFromOutside( - Transaction calldata _transaction - ) external payable; + function executeTransactionFromOutside(Transaction calldata _transaction) external payable; function payForTransaction( bytes32 _txHash, diff --git a/etc/system-contracts/contracts/interfaces/IAccountCodeStorage.sol b/etc/system-contracts/contracts/interfaces/IAccountCodeStorage.sol index 977e7e16..c266774e 100644 --- a/etc/system-contracts/contracts/interfaces/IAccountCodeStorage.sol +++ b/etc/system-contracts/contracts/interfaces/IAccountCodeStorage.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IAccountCodeStorage { function storeAccountConstructingCodeHash(address _address, bytes32 _hash) external; diff --git a/etc/system-contracts/contracts/interfaces/IBootloaderUtilities.sol b/etc/system-contracts/contracts/interfaces/IBootloaderUtilities.sol index 16cfc7cf..e995295e 100644 --- a/etc/system-contracts/contracts/interfaces/IBootloaderUtilities.sol +++ b/etc/system-contracts/contracts/interfaces/IBootloaderUtilities.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "../libraries/TransactionHelper.sol"; diff --git a/etc/system-contracts/contracts/interfaces/IBytecodeCompressor.sol b/etc/system-contracts/contracts/interfaces/IBytecodeCompressor.sol deleted file mode 100644 index 1958f888..00000000 --- a/etc/system-contracts/contracts/interfaces/IBytecodeCompressor.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -interface IBytecodeCompressor { - function publishCompressedBytecode( - bytes calldata _bytecode, - bytes calldata _rawCompressedData - ) external payable returns (bytes32 bytecodeHash); -} diff --git a/etc/system-contracts/contracts/interfaces/IComplexUpgrader.sol b/etc/system-contracts/contracts/interfaces/IComplexUpgrader.sol index f535356a..ebc26dd2 100644 --- a/etc/system-contracts/contracts/interfaces/IComplexUpgrader.sol +++ b/etc/system-contracts/contracts/interfaces/IComplexUpgrader.sol @@ -1,10 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IComplexUpgrader { - function upgrade( - address _delegateTo, - bytes calldata _calldata - ) external payable; + function upgrade(address _delegateTo, bytes calldata _calldata) external payable; } diff --git a/etc/system-contracts/contracts/interfaces/ICompressor.sol b/etc/system-contracts/contracts/interfaces/ICompressor.sol new file mode 100644 index 00000000..16e02d97 --- /dev/null +++ b/etc/system-contracts/contracts/interfaces/ICompressor.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +// The bitmask by applying which to the compressed state diff metadata we retrieve its operation. +uint8 constant OPERATION_BITMASK = 7; +// The number of bits shifting the compressed state diff metadata by which we retrieve its length. +uint8 constant LENGTH_BITS_OFFSET = 3; +// The maximal length in bytes that an enumeration index can have. +uint8 constant MAX_ENUMERATION_INDEX_SIZE = 8; + +interface ICompressor { + function publishCompressedBytecode( + bytes calldata _bytecode, + bytes calldata _rawCompressedData + ) external payable returns (bytes32 bytecodeHash); + + function verifyCompressedStateDiffs( + uint256 _numberOfStateDiffs, + uint256 _enumerationIndexSize, + bytes calldata _stateDiffs, + bytes calldata _compressedStateDiffs + ) external payable returns (bytes32 stateDiffHash); +} diff --git a/etc/system-contracts/contracts/interfaces/IContractDeployer.sol b/etc/system-contracts/contracts/interfaces/IContractDeployer.sol index d21b917d..3f84672d 100644 --- a/etc/system-contracts/contracts/interfaces/IContractDeployer.sol +++ b/etc/system-contracts/contracts/interfaces/IContractDeployer.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IContractDeployer { /// @notice Defines the version of the account abstraction protocol diff --git a/etc/system-contracts/contracts/interfaces/IEthToken.sol b/etc/system-contracts/contracts/interfaces/IEthToken.sol index 5543d931..ec9b399f 100644 --- a/etc/system-contracts/contracts/interfaces/IEthToken.sol +++ b/etc/system-contracts/contracts/interfaces/IEthToken.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IEthToken { function balanceOf(uint256) external view returns (uint256); diff --git a/etc/system-contracts/contracts/interfaces/IImmutableSimulator.sol b/etc/system-contracts/contracts/interfaces/IImmutableSimulator.sol index 650f47d8..d30ac9b9 100644 --- a/etc/system-contracts/contracts/interfaces/IImmutableSimulator.sol +++ b/etc/system-contracts/contracts/interfaces/IImmutableSimulator.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; struct ImmutableData { uint256 index; diff --git a/etc/system-contracts/contracts/interfaces/IKnownCodesStorage.sol b/etc/system-contracts/contracts/interfaces/IKnownCodesStorage.sol index c56327ad..b5a783ba 100644 --- a/etc/system-contracts/contracts/interfaces/IKnownCodesStorage.sol +++ b/etc/system-contracts/contracts/interfaces/IKnownCodesStorage.sol @@ -1,17 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IKnownCodesStorage { event MarkedAsKnown(bytes32 indexed bytecodeHash, bool indexed sendBytecodeToL1); function markFactoryDeps(bool _shouldSendToL1, bytes32[] calldata _hashes) external; - function markBytecodeAsPublished( - bytes32 _bytecodeHash, - bytes32 _l1PreimageHash, - uint256 _l1PreimageBytesLen - ) external; + function markBytecodeAsPublished(bytes32 _bytecodeHash) external; function getMarker(bytes32 _hash) external view returns (uint256); } diff --git a/etc/system-contracts/contracts/interfaces/IL1Messenger.sol b/etc/system-contracts/contracts/interfaces/IL1Messenger.sol index fbf57e53..ab6a670f 100644 --- a/etc/system-contracts/contracts/interfaces/IL1Messenger.sol +++ b/etc/system-contracts/contracts/interfaces/IL1Messenger.sol @@ -1,11 +1,50 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; + +/// @dev The log passed from L2 +/// @param l2ShardId The shard identifier, 0 - rollup, 1 - porter. All other values are not used but are reserved for the future +/// @param isService A boolean flag that is part of the log along with `key`, `value`, and `sender` address. +/// This field is required formally but does not have any special meaning. +/// @param txNumberInBlock The L2 transaction number in a block, in which the log was sent +/// @param sender The L2 address which sent the log +/// @param key The 32 bytes of information that was sent in the log +/// @param value The 32 bytes of information that was sent in the log +// Both `key` and `value` are arbitrary 32-bytes selected by the log sender +struct L2ToL1Log { + uint8 l2ShardId; + bool isService; + uint16 txNumberInBlock; + address sender; + bytes32 key; + bytes32 value; +} + +/// @dev Bytes in raw L2 to L1 log +/// @dev Equal to the bytes size of the tuple - (uint8 ShardId, bool isService, uint16 txNumberInBlock, address sender, bytes32 key, bytes32 value) +uint256 constant L2_TO_L1_LOG_SERIALIZE_SIZE = 88; + +/// @dev The value of default leaf hash for L2 to L1 logs Merkle tree +/// @dev An incomplete fixed-size tree is filled with this value to be a full binary tree +/// @dev Actually equal to the `keccak256(new bytes(L2_TO_L1_LOG_SERIALIZE_SIZE))` +bytes32 constant L2_L1_LOGS_TREE_DEFAULT_LEAF_HASH = 0x72abee45b59e344af8a6e520241c4744aff26ed411f4c4b00f8af09adada43ba; + +/// @dev The current version of state diff compression being used. +uint256 constant STATE_DIFF_COMPRESSION_VERSION_NUMBER = 1; interface IL1Messenger { // Possibly in the future we will be able to track the messages sent to L1 with // some hooks in the VM. For now, it is much easier to track them with L2 events. event L1MessageSent(address indexed _sender, bytes32 indexed _hash, bytes _message); + event L2ToL1LogSent(L2ToL1Log _l2log); + + event BytecodeL1PublicationRequested(bytes32 _bytecodeHash); + function sendToL1(bytes memory _message) external returns (bytes32); + + function sendL2ToL1Log(bool _isService, bytes32 _key, bytes32 _value) external returns (uint256 logIdInMerkleTree); + + // This function is expected to be called only by the KnownCodesStorage system contract + function requestBytecodeL1Publication(bytes32 _bytecodeHash) external; } diff --git a/etc/system-contracts/contracts/interfaces/IL2StandardToken.sol b/etc/system-contracts/contracts/interfaces/IL2StandardToken.sol index 5edb43c2..3d75c8ed 100644 --- a/etc/system-contracts/contracts/interfaces/IL2StandardToken.sol +++ b/etc/system-contracts/contracts/interfaces/IL2StandardToken.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IL2StandardToken { event BridgeMint(address indexed _account, uint256 _amount); diff --git a/etc/system-contracts/contracts/interfaces/IMailbox.sol b/etc/system-contracts/contracts/interfaces/IMailbox.sol index f362f639..ba673058 100644 --- a/etc/system-contracts/contracts/interfaces/IMailbox.sol +++ b/etc/system-contracts/contracts/interfaces/IMailbox.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; interface IMailbox { function finalizeEthWithdrawal( - uint256 _l2BlockNumber, + uint256 _l2BatchNumber, uint256 _l2MessageIndex, uint16 _l2TxNumberInBlock, bytes calldata _message, diff --git a/etc/system-contracts/contracts/interfaces/INonceHolder.sol b/etc/system-contracts/contracts/interfaces/INonceHolder.sol index ebddfb04..1213fbea 100644 --- a/etc/system-contracts/contracts/interfaces/INonceHolder.sol +++ b/etc/system-contracts/contracts/interfaces/INonceHolder.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; /** * @author Matter Labs diff --git a/etc/system-contracts/contracts/interfaces/IPaymaster.sol b/etc/system-contracts/contracts/interfaces/IPaymaster.sol index cc151935..928f19ed 100644 --- a/etc/system-contracts/contracts/interfaces/IPaymaster.sol +++ b/etc/system-contracts/contracts/interfaces/IPaymaster.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "../libraries/TransactionHelper.sol"; diff --git a/etc/system-contracts/contracts/interfaces/IPaymasterFlow.sol b/etc/system-contracts/contracts/interfaces/IPaymasterFlow.sol index dc1b849f..59352f23 100644 --- a/etc/system-contracts/contracts/interfaces/IPaymasterFlow.sol +++ b/etc/system-contracts/contracts/interfaces/IPaymasterFlow.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; /** * @author Matter Labs diff --git a/etc/system-contracts/contracts/interfaces/ISystemContext.sol b/etc/system-contracts/contracts/interfaces/ISystemContext.sol index 6bc4476b..d8a98292 100644 --- a/etc/system-contracts/contracts/interfaces/ISystemContext.sol +++ b/etc/system-contracts/contracts/interfaces/ISystemContext.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; /** * @author Matter Labs @@ -16,11 +16,10 @@ interface ISystemContext { /// @notice A structure representing the timeline for the upgrade from the batch numbers to the L2 block numbers. /// @dev It will used for the L1 batch -> L2 block migration in Q3 2023 only. struct VirtualBlockUpgradeInfo { - /// @notice In order to maintain consistent results for `blockhash` requests, we'll + /// @notice In order to maintain consistent results for `blockhash` requests, we'll /// have to remember the number of the batch when the upgrade to the virtual blocks has been done. /// The hashes for virtual blocks before the upgrade are identical to the hashes of the corresponding batches. uint128 virtualBlockStartBatch; - /// @notice L2 block when the virtual blocks have caught up with the L2 blocks. Starting from this block, /// all the information returned to users for block.timestamp/number, etc should be the information about the L2 blocks and /// not virtual blocks. @@ -41,6 +40,8 @@ interface ISystemContext { function baseFee() external view returns (uint256); + function txNumberInBlock() external view returns (uint16); + function getBlockHashEVM(uint256 _block) external view returns (bytes32); function getBatchHash(uint256 _batchNumber) external view returns (bytes32 hash); diff --git a/etc/system-contracts/contracts/interfaces/ISystemContextDeprecated.sol b/etc/system-contracts/contracts/interfaces/ISystemContextDeprecated.sol index 40ead86d..b51faeed 100644 --- a/etc/system-contracts/contracts/interfaces/ISystemContextDeprecated.sol +++ b/etc/system-contracts/contracts/interfaces/ISystemContextDeprecated.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; /** * @author Matter Labs * @notice The interface with deprecated functions of the SystemContext contract. It is aimed for backward compatibility. */ interface ISystemContextDeprecated { - function currentBlockInfo() external view returns(uint256); + function currentBlockInfo() external view returns (uint256); function getBlockNumberAndTimestamp() external view returns (uint256 blockNumber, uint256 blockTimestamp); diff --git a/etc/system-contracts/contracts/interfaces/ISystemContract.sol b/etc/system-contracts/contracts/interfaces/ISystemContract.sol index 66c8565f..c486abc9 100644 --- a/etc/system-contracts/contracts/interfaces/ISystemContract.sol +++ b/etc/system-contracts/contracts/interfaces/ISystemContract.sol @@ -1,19 +1,46 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import {SystemContractHelper} from "../libraries/SystemContractHelper.sol"; +import {BOOTLOADER_FORMAL_ADDRESS} from "../Constants.sol"; /// @dev Solidity does not allow exporting modifiers via libraries, so /// the only way to do reuse modifiers is to have a base contract +/// @dev Never add storage variables into this contract as some +/// system contracts rely on this abstract contract as on interface! abstract contract ISystemContract { /// @notice Modifier that makes sure that the method /// can only be called via a system call. modifier onlySystemCall() { require( SystemContractHelper.isSystemCall() || SystemContractHelper.isSystemContract(msg.sender), - "This method requires the system call flag" + "This method require system call flag" ); _; } + + /// @notice Modifier that makes sure that the method + /// can only be called from a system contract. + modifier onlyCallFromSystemContract() { + require( + SystemContractHelper.isSystemContract(msg.sender), + "This method require the caller to be system contract" + ); + _; + } + + /// @notice Modifier that makes sure that the method + /// can only be called from a special given address. + modifier onlyCallFrom(address caller) { + require(msg.sender == caller, "Inappropriate caller"); + _; + } + + /// @notice Modifier that makes sure that the method + /// can only be called from the bootloader. + modifier onlyCallFromBootloader() { + require(msg.sender == BOOTLOADER_FORMAL_ADDRESS, "Callable only by the bootloader"); + _; + } } diff --git a/etc/system-contracts/contracts/libraries/EfficientCall.sol b/etc/system-contracts/contracts/libraries/EfficientCall.sol index 2983a518..22801d6f 100644 --- a/etc/system-contracts/contracts/libraries/EfficientCall.sol +++ b/etc/system-contracts/contracts/libraries/EfficientCall.sol @@ -1,13 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "./SystemContractHelper.sol"; import "./Utils.sol"; -import {SHA256_SYSTEM_CONTRACT, KECCAK256_SYSTEM_CONTRACT} from "../Constants.sol"; +import {SHA256_SYSTEM_CONTRACT, KECCAK256_SYSTEM_CONTRACT, MSG_VALUE_SYSTEM_CONTRACT} from "../Constants.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice This library is used to perform ultra-efficient calls using zkEVM-specific features. * @dev EVM calls always accept a memory slice as input and return a memory slice as output. * Therefore, even if the user has a ready-made calldata slice, they still need to copy it to memory @@ -249,24 +250,17 @@ library EfficientCall { ) private view { SystemContractHelper.loadCalldataIntoActivePtr(); - // Currently, zkEVM considers the pointer valid if(ptr.offset < ptr.length || (ptr.length == 0 && ptr.offset == 0)), otherwise panics. - // So, if the data is empty we need to make the `ptr.length = ptr.offset = 0`, otherwise follow standard logic. - if (_data.length == 0) { - // Safe to cast, offset is never bigger than `type(uint32).max` - SystemContractHelper.ptrShrinkIntoActive(uint32(msg.data.length)); - } else { - uint256 dataOffset; - assembly { - dataOffset := _data.offset - } - - // Safe to cast, offset is never bigger than `type(uint32).max` - SystemContractHelper.ptrAddIntoActive(uint32(dataOffset)); - // Safe to cast, `data.length` is never bigger than `type(uint32).max` - uint32 shrinkTo = uint32(msg.data.length - (_data.length + dataOffset)); - SystemContractHelper.ptrShrinkIntoActive(shrinkTo); + uint256 dataOffset; + assembly { + dataOffset := _data.offset } + // Safe to cast, offset is never bigger than `type(uint32).max` + SystemContractHelper.ptrAddIntoActive(uint32(dataOffset)); + // Safe to cast, `data.length` is never bigger than `type(uint32).max` + uint32 shrinkTo = uint32(msg.data.length - (_data.length + dataOffset)); + SystemContractHelper.ptrShrinkIntoActive(shrinkTo); + uint32 gas = Utils.safeCastToU32(_gas); uint256 farCallAbi = SystemContractsCaller.getFarCallABIWithEmptyFatPointer( gas, diff --git a/etc/system-contracts/contracts/libraries/RLPEncoder.sol b/etc/system-contracts/contracts/libraries/RLPEncoder.sol index ddef39ab..8e32ea9b 100644 --- a/etc/system-contracts/contracts/libraries/RLPEncoder.sol +++ b/etc/system-contracts/contracts/libraries/RLPEncoder.sol @@ -1,7 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; +/** + * @author Matter Labs + * @custom:security-contact security@matterlabs.dev + * @notice This library provides RLP encoding functionality. + */ library RLPEncoder { function encodeAddress(address _val) internal pure returns (bytes memory encoded) { // The size is equal to 20 bytes of the address itself + 1 for encoding bytes length in RLP. diff --git a/etc/system-contracts/contracts/libraries/SystemContractHelper.sol b/etc/system-contracts/contracts/libraries/SystemContractHelper.sol index 68a8e37c..a66b9670 100644 --- a/etc/system-contracts/contracts/libraries/SystemContractHelper.sol +++ b/etc/system-contracts/contracts/libraries/SystemContractHelper.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8; +pragma solidity 0.8.20; import {MAX_SYSTEM_CONTRACT_ADDRESS} from "../Constants.sol"; -import "./SystemContractsCaller.sol"; +import {SystemContractsCaller, CalldataForwardingMode, CALLFLAGS_CALL_ADDRESS, CODE_ADDRESS_CALL_ADDRESS, EVENT_WRITE_ADDRESS, EVENT_INITIALIZE_ADDRESS, GET_EXTRA_ABI_DATA_ADDRESS, LOAD_CALLDATA_INTO_ACTIVE_PTR_CALL_ADDRESS, META_CODE_SHARD_ID_OFFSET, META_CALLER_SHARD_ID_OFFSET, META_SHARD_ID_OFFSET, META_AUX_HEAP_SIZE_OFFSET, META_HEAP_SIZE_OFFSET, META_GAS_PER_PUBDATA_BYTE_OFFSET, MIMIC_CALL_BY_REF_CALL_ADDRESS, META_CALL_ADDRESS, MSG_VALUE_SIMULATOR_IS_SYSTEM_BIT, PTR_CALLDATA_CALL_ADDRESS, PTR_ADD_INTO_ACTIVE_CALL_ADDRESS, PTR_SHRINK_INTO_ACTIVE_CALL_ADDRESS, PTR_PACK_INTO_ACTIVE_CALL_ADDRESS, RAW_FAR_CALL_BY_REF_CALL_ADDRESS, PRECOMPILE_CALL_ADDRESS, SET_CONTEXT_VALUE_CALL_ADDRESS, SYSTEM_CALL_BY_REF_CALL_ADDRESS, TO_L1_CALL_ADDRESS} from "./SystemContractsCaller.sol"; uint256 constant UINT32_MASK = 0xffffffff; uint256 constant UINT128_MASK = 0xffffffffffffffffffffffffffffffff; @@ -31,6 +31,7 @@ enum Global { /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice Library used for accessing zkEVM-specific opcodes, needed for the development * of system contracts. * @dev While this library will be eventually available to public, some of the provided @@ -143,12 +144,10 @@ library SystemContractHelper { /// NOTE: The precompile type depends on `this` which calls precompile, which means that only /// system contracts corresponding to the list of precompiles above can do `precompileCall`. /// @dev If used not in the `sha256`, `keccak256` or `ecrecover` contracts, it will just burn the gas provided. - function precompileCall(uint256 _rawParams, uint32 _gasToBurn) internal view returns (bool success) { + /// @dev This method is `unsafe` because it does not check whether there is enough gas to burn. + function unsafePrecompileCall(uint256 _rawParams, uint32 _gasToBurn) internal view returns (bool success) { address callAddr = PRECOMPILE_CALL_ADDRESS; - // After `precompileCall` gas will be burned down to 0 if there are not enough of them, - // thats why it should be checked before the call. - require(gasleft() >= _gasToBurn); uint256 cleanupMask = UINT32_MASK; assembly { // Clearing input params as they are not cleaned by Solidity by default @@ -271,6 +270,8 @@ library SystemContractHelper { function getZkSyncMeta() internal view returns (ZkSyncMeta memory meta) { uint256 metaPacked = getZkSyncMetaBytes(); meta.gasPerPubdataByte = getGasPerPubdataByteFromMeta(metaPacked); + meta.heapSize = getHeapSizeFromMeta(metaPacked); + meta.auxHeapSize = getAuxHeapSizeFromMeta(metaPacked); meta.shardId = getShardIdFromMeta(metaPacked); meta.callerShardId = getCallerShardIdFromMeta(metaPacked); meta.codeShardId = getCodeShardIdFromMeta(metaPacked); @@ -328,4 +329,14 @@ library SystemContractHelper { function isSystemContract(address _address) internal pure returns (bool) { return uint160(_address) <= uint160(MAX_SYSTEM_CONTRACT_ADDRESS); } + + /// @notice Method used for burning a certain amount of gas. + /// @param _gasToPay The number of gas to burn. + function burnGas(uint32 _gasToPay) internal view { + bool precompileCallSuccess = unsafePrecompileCall( + 0, // The precompile parameters are formal ones. We only need the precompile call to burn gas. + _gasToPay + ); + require(precompileCallSuccess, "Failed to charge gas"); + } } diff --git a/etc/system-contracts/contracts/libraries/SystemContractsCaller.sol b/etc/system-contracts/contracts/libraries/SystemContractsCaller.sol index 594b5b3f..7be17992 100644 --- a/etc/system-contracts/contracts/libraries/SystemContractsCaller.sol +++ b/etc/system-contracts/contracts/libraries/SystemContractsCaller.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8; +pragma solidity 0.8.20; import {MSG_VALUE_SYSTEM_CONTRACT, MSG_VALUE_SIMULATOR_IS_SYSTEM_BIT} from "../Constants.sol"; import "./Utils.sol"; @@ -61,6 +61,7 @@ enum CalldataForwardingMode { /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice A library that allows calling contracts with the `isSystem` flag. * @dev It is needed to call ContractDeployer and NonceHolder. */ diff --git a/etc/system-contracts/contracts/libraries/TransactionHelper.sol b/etc/system-contracts/contracts/libraries/TransactionHelper.sol index 5d5cc6cf..e0578197 100644 --- a/etc/system-contracts/contracts/libraries/TransactionHelper.sol +++ b/etc/system-contracts/contracts/libraries/TransactionHelper.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "../openzeppelin/token/ERC20/IERC20.sol"; import "../openzeppelin/token/ERC20/utils/SafeERC20.sol"; @@ -72,6 +72,7 @@ struct Transaction { /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice Library is used to help custom accounts to work with common methods for the Transaction type. */ library TransactionHelper { diff --git a/etc/system-contracts/contracts/libraries/UnsafeBytesCalldata.sol b/etc/system-contracts/contracts/libraries/UnsafeBytesCalldata.sol index ff265fbd..4ce65f5f 100644 --- a/etc/system-contracts/contracts/libraries/UnsafeBytesCalldata.sol +++ b/etc/system-contracts/contracts/libraries/UnsafeBytesCalldata.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @dev The library provides a set of functions that help read data from calldata bytes. * @dev Each of the functions accepts the `bytes calldata` and the offset where data should be read and returns a value of a certain type. * @@ -22,10 +23,29 @@ library UnsafeBytesCalldata { } } + function readUint32(bytes calldata _bytes, uint256 _start) internal pure returns (uint32 result) { + assembly { + let offset := sub(_bytes.offset, 28) + result := calldataload(add(offset, _start)) + } + } + function readUint64(bytes calldata _bytes, uint256 _start) internal pure returns (uint64 result) { assembly { let offset := sub(_bytes.offset, 24) result := calldataload(add(offset, _start)) } } + + function readBytes32(bytes calldata _bytes, uint256 _start) internal pure returns (bytes32 result) { + assembly { + result := calldataload(add(_bytes.offset, _start)) + } + } + + function readUint256(bytes calldata _bytes, uint256 _start) internal pure returns (uint256 result) { + assembly { + result := calldataload(add(_bytes.offset, _start)) + } + } } diff --git a/etc/system-contracts/contracts/libraries/Utils.sol b/etc/system-contracts/contracts/libraries/Utils.sol index d1f219de..a2791520 100644 --- a/etc/system-contracts/contracts/libraries/Utils.sol +++ b/etc/system-contracts/contracts/libraries/Utils.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity >=0.8.0; +pragma solidity 0.8.20; import "./EfficientCall.sol"; /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @dev Common utilities used in zkSync system contracts */ library Utils { @@ -82,15 +83,15 @@ library Utils { // Note that the length of the bytecode must be provided in 32-byte words. require(_bytecode.length % 32 == 0, "po"); - uint256 bytecodeLenInWords = _bytecode.length / 32; - require(bytecodeLenInWords < 2 ** 16, "pp"); // bytecode length must be less than 2^16 words - require(bytecodeLenInWords % 2 == 1, "pr"); // bytecode length in words must be odd + uint256 lengthInWords = _bytecode.length / 32; + require(lengthInWords < 2 ** 16, "pp"); // bytecode length must be less than 2^16 words + require(lengthInWords % 2 == 1, "pr"); // bytecode length in words must be odd hashedBytecode = EfficientCall.sha(_bytecode) & 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; // Setting the version of the hash hashedBytecode = (hashedBytecode | bytes32(uint256(1 << 248))); // Setting the length - hashedBytecode = hashedBytecode | bytes32(bytecodeLenInWords << 224); + hashedBytecode = hashedBytecode | bytes32(lengthInWords << 224); } } diff --git a/etc/system-contracts/contracts/precompiles/EcAdd.yul b/etc/system-contracts/contracts/precompiles/EcAdd.yul new file mode 100644 index 00000000..bfbac645 --- /dev/null +++ b/etc/system-contracts/contracts/precompiles/EcAdd.yul @@ -0,0 +1,441 @@ +object "EcAdd" { + code { + return(0, 0) + } + object "EcAdd_deployed" { + code { + //////////////////////////////////////////////////////////////// + // CONSTANTS + //////////////////////////////////////////////////////////////// + + /// @notice Constant function for value three in Montgomery form. + /// @dev This value was precomputed using Python. + /// @return m_three The value three in Montgomery form. + function MONTGOMERY_THREE() -> m_three { + m_three := 19052624634359457937016868847204597229365286637454337178037183604060995791063 + } + + /// @notice Constant function for the alt_bn128 field order. + /// @dev See https://eips.ethereum.org/EIPS/eip-196 for further details. + /// @return ret The alt_bn128 field order. + function P() -> ret { + ret := 21888242871839275222246405745257275088696311157297823662689037894645226208583 + } + + /// @notice Constant function for the pre-computation of R^2 % N for the Montgomery REDC algorithm. + /// @dev R^2 is the Montgomery residue of the value 2^512. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further detals. + /// @dev This value was precomputed using Python. + /// @return ret The value R^2 modulus the curve field order. + function R2_MOD_P() -> ret { + ret := 3096616502983703923843567936837374451735540968419076528771170197431451843209 + } + + /// @notice Constant function for the pre-computation of N' for the Montgomery REDC algorithm. + /// @dev N' is a value such that NN' = -1 mod R, with N being the curve field order. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further detals. + /// @dev This value was precomputed using Python. + /// @return ret The value N'. + function N_PRIME() -> ret { + ret := 111032442853175714102588374283752698368366046808579839647964533820976443843465 + } + + ////////////////////////////////////////////////////////////////// + // HELPER FUNCTIONS + ////////////////////////////////////////////////////////////////// + + /// @dev Executes the `precompileCall` opcode. + function precompileCall(precompileParams, gasToBurn) -> ret { + // Compiler simulation for calling `precompileCall` opcode + ret := verbatim_2i_1o("precompile", precompileParams, gasToBurn) + } + + /// @notice Burns remaining gas until revert. + /// @dev This function is used to burn gas in the case of a failed precompile call. + function burnGas() { + // Precompiles that do not have a circuit counterpart + // will burn the provided gas by calling this function. + precompileCall(0, gas()) + } + + /// @notice Retrieves the highest half of the multiplication result. + /// @param multiplicand The value to multiply. + /// @param multiplier The multiplier. + /// @return ret The highest half of the multiplication result. + function getHighestHalfOfMultiplication(multiplicand, multiplier) -> ret { + ret := verbatim_2i_1o("mul_high", multiplicand, multiplier) + } + + /// @notice Computes the modular subtraction of two values. + /// @param minuend The value to subtract from. + /// @param subtrahend The value to subtract. + /// @param modulus The modulus. + /// @return difference The modular subtraction of the two values. + function submod(minuend, subtrahend, modulus) -> difference { + difference := addmod(minuend, sub(modulus, subtrahend), modulus) + } + + /// @notice Computes an addition and checks for overflow. + /// @param augend The value to add to. + /// @param addend The value to add. + /// @return sum The sum of the two values. + /// @return overflowed True if the addition overflowed, false otherwise. + function overflowingAdd(augend, addend) -> sum, overflowed { + sum := add(augend, addend) + overflowed := lt(sum, augend) + } + + // @notice Checks if a point is on the curve. + // @dev The curve in question is the alt_bn128 curve. + // @dev The Short Weierstrass equation of the curve is y^2 = x^3 + 3. + // @param x The x coordinate of the point in Montgomery form. + // @param y The y coordinate of the point in Montgomery form. + // @return ret True if the point is on the curve, false otherwise. + function pointIsInCurve(x, y) -> ret { + let ySquared := montgomeryMul(y, y) + let xSquared := montgomeryMul(x, x) + let xQubed := montgomeryMul(xSquared, x) + let xQubedPlusThree := montgomeryAdd(xQubed, MONTGOMERY_THREE()) + + ret := eq(ySquared, xQubedPlusThree) + } + + /// @notice Checks if a point is the point at infinity. + /// @dev The point at infinity is defined as the point (0, 0). + /// @dev See https://eips.ethereum.org/EIPS/eip-196 for further details. + /// @param x The x coordinate of the point. + /// @param y The y coordinate of the point. + /// @return ret True if the point is the point at infinity, false otherwise. + function isInfinity(x, y) -> ret { + ret := iszero(or(x, y)) + } + + /// @notice Checks if a coordinate is on the curve field order. + /// @dev A coordinate is on the curve field order if it is on the range [0, curveFieldOrder). + /// @dev This check is required in the precompile specification. See https://eips.ethereum.org/EIPS/eip-196 for further details. + /// @param coordinate The coordinate to check. + /// @return ret True if the coordinate is in the range, false otherwise. + function isOnFieldOrder(coordinate) -> ret { + ret := lt(coordinate, P()) + } + + /// @notice Computes the inverse in Montgomery Form of a number in Montgomery Form. + /// @dev Reference: https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/montgomery_backed_prime_fields.rs#L169 + /// @dev Let `base` be a number in Montgomery Form, then base = a*R mod P() being `a` the base number (not in Montgomery Form) + /// @dev Let `inv` be the inverse of a number `a` in Montgomery Form, then inv = a^(-1)*R mod P() + /// @dev The original binary extended euclidean algorithms takes a number a and returns a^(-1) mod N + /// @dev In our case N is P(), and we'd like the input and output to be in Montgomery Form (a*R mod P() + /// @dev and a^(-1)*R mod P() respectively). + /// @dev If we just pass the input as a number in Montgomery Form the result would be a^(-1)*R^(-1) mod P(), + /// @dev but we want it to be a^(-1)*R mod P(). + /// @dev For that, we take advantage of the algorithm's linearity and multiply the result by R^2 mod P() + /// @dev to get R^2*a^(-1)*R^(-1) mod P() = a^(-1)*R mod P() as the desired result in Montgomery Form. + /// @dev `inv` takes the value of `b` or `c` being the result sometimes `b` and sometimes `c`. In paper + /// @dev multiplying `b` or `c` by R^2 mod P() results on starting their values as b = R2_MOD_P() and c = 0. + /// @param base A number `a` in Montgomery Form, then base = a*R mod P(). + /// @return inv The inverse of a number `a` in Montgomery Form, then inv = a^(-1)*R mod P(). + function binaryExtendedEuclideanAlgorithm(base) -> inv { + let modulus := P() + let u := base + let v := modulus + // Avoids unnecessary reduction step. + let b := R2_MOD_P() + let c := 0 + + for {} and(iszero(eq(u, 1)), iszero(eq(v, 1))) {} { + for {} iszero(and(u, 1)) {} { + u := shr(1, u) + let current := b + switch and(current, 1) + case 0 { + b := shr(1, b) + } + case 1 { + b := shr(1, add(b, modulus)) + } + } + + for {} iszero(and(v, 1)) {} { + v := shr(1, v) + let current := c + switch and(current, 1) + case 0 { + c := shr(1, c) + } + case 1 { + c := shr(1, add(c, modulus)) + } + } + + switch gt(v, u) + case 0 { + u := sub(u, v) + if lt(b, c) { + b := add(b, modulus) + } + b := sub(b, c) + } + case 1 { + v := sub(v, u) + if lt(c, b) { + c := add(c, modulus) + } + c := sub(c, b) + } + } + + switch eq(u, 1) + case 0 { + inv := c + } + case 1 { + inv := b + } + } + + /// @notice Implementation of the Montgomery reduction algorithm (a.k.a. REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm + /// @param lowestHalfOfT The lowest half of the value T. + /// @param higherHalfOfT The higher half of the value T. + /// @return S The result of the Montgomery reduction. + function REDC(lowestHalfOfT, higherHalfOfT) -> S { + let m := mul(lowestHalfOfT, N_PRIME()) + let hi := add(higherHalfOfT, getHighestHalfOfMultiplication(m, P())) + let lo, overflowed := overflowingAdd(lowestHalfOfT, mul(m, P())) + if overflowed { + hi := add(hi, 1) + } + S := hi + if iszero(lt(hi, P())) { + S := sub(hi, P()) + } + } + + /// @notice Encodes a field element into the Montgomery form using the Montgomery reduction algorithm (REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further details on transforming a field element into the Montgomery form. + /// @param a The field element to encode. + /// @return ret The field element in Montgomery form. + function intoMontgomeryForm(a) -> ret { + let hi := getHighestHalfOfMultiplication(a, R2_MOD_P()) + let lo := mul(a, R2_MOD_P()) + ret := REDC(lo, hi) + } + + /// @notice Decodes a field element out of the Montgomery form using the Montgomery reduction algorithm (REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further details on transforming a field element out of the Montgomery form. + /// @param m The field element in Montgomery form to decode. + /// @return ret The decoded field element. + function outOfMontgomeryForm(m) -> ret { + let hi := 0 + let lo := m + ret := REDC(lo, hi) + } + + /// @notice Computes the Montgomery addition. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further details on the Montgomery multiplication. + /// @param augend The augend in Montgomery form. + /// @param addend The addend in Montgomery form. + /// @return ret The result of the Montgomery addition. + function montgomeryAdd(augend, addend) -> ret { + ret := add(augend, addend) + if iszero(lt(ret, P())) { + ret := sub(ret, P()) + } + } + + /// @notice Computes the Montgomery subtraction. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further details on the Montgomery multiplication. + /// @param minuend The minuend in Montgomery form. + /// @param subtrahend The subtrahend in Montgomery form. + /// @return ret The result of the Montgomery subtraction. + function montgomerySub(minuend, subtrahend) -> ret { + ret := montgomeryAdd(minuend, sub(P(), subtrahend)) + } + + /// @notice Computes the Montgomery multiplication using the Montgomery reduction algorithm (REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further details on the Montgomery multiplication. + /// @param multiplicand The multiplicand in Montgomery form. + /// @param multiplier The multiplier in Montgomery form. + /// @return ret The result of the Montgomery multiplication. + function montgomeryMul(multiplicand, multiplier) -> ret { + let higherHalfOfProduct := getHighestHalfOfMultiplication(multiplicand, multiplier) + let lowestHalfOfProduct := mul(multiplicand, multiplier) + ret := REDC(lowestHalfOfProduct, higherHalfOfProduct) + } + + /// @notice Computes the Montgomery modular inverse skipping the Montgomery reduction step. + /// @dev The Montgomery reduction step is skept because a modification in the binary extended Euclidean algorithm is used to compute the modular inverse. + /// @dev See the function `binaryExtendedEuclideanAlgorithm` for further details. + /// @param a The field element in Montgomery form to compute the modular inverse of. + /// @return invmod The result of the Montgomery modular inverse (in Montgomery form). + function montgomeryModularInverse(a) -> invmod { + invmod := binaryExtendedEuclideanAlgorithm(a) + } + + /// @notice Computes the Montgomery division. + /// @dev The Montgomery division is computed by multiplying the dividend with the modular inverse of the divisor. + /// @param dividend The dividend in Montgomery form. + /// @param divisor The divisor in Montgomery form. + /// @return quotient The result of the Montgomery division. + function montgomeryDiv(dividend, divisor) -> quotient { + quotient := montgomeryMul(dividend, montgomeryModularInverse(divisor)) + } + + //////////////////////////////////////////////////////////////// + // FALLBACK + //////////////////////////////////////////////////////////////// + + // Retrieve the coordinates from the calldata + let x1 := calldataload(0) + let y1 := calldataload(32) + let x2 := calldataload(64) + let y2 := calldataload(96) + + let p1IsInfinity := isInfinity(x1, y1) + let p2IsInfinity := isInfinity(x2, y2) + + if and(p1IsInfinity, p2IsInfinity) { + // Infinity + Infinity = Infinity + mstore(0, 0) + mstore(32, 0) + return(0, 64) + } + if and(p1IsInfinity, iszero(p2IsInfinity)) { + // Infinity + P = P + + // Ensure that the coordinates are between 0 and the field order. + if or(iszero(isOnFieldOrder(x2)), iszero(isOnFieldOrder(y2))) { + burnGas() + } + + let m_x2 := intoMontgomeryForm(x2) + let m_y2 := intoMontgomeryForm(y2) + + // Ensure that the point is in the curve (Y^2 = X^3 + 3). + if iszero(pointIsInCurve(m_x2, m_y2)) { + burnGas() + } + + // We just need to go into the Montgomery form to perform the + // computations in pointIsInCurve, but we do not need to come back. + + mstore(0, x2) + mstore(32, y2) + return(0, 64) + } + if and(iszero(p1IsInfinity), p2IsInfinity) { + // P + Infinity = P + + // Ensure that the coordinates are between 0 and the field order. + if or(iszero(isOnFieldOrder(x1)), iszero(isOnFieldOrder(y1))) { + burnGas() + } + + let m_x1 := intoMontgomeryForm(x1) + let m_y1 := intoMontgomeryForm(y1) + + // Ensure that the point is in the curve (Y^2 = X^3 + 3). + if iszero(pointIsInCurve(m_x1, m_y1)) { + burnGas() + } + + // We just need to go into the Montgomery form to perform the + // computations in pointIsInCurve, but we do not need to come back. + + mstore(0, x1) + mstore(32, y1) + return(0, 64) + } + + // Ensure that the coordinates are between 0 and the field order. + if or(iszero(isOnFieldOrder(x1)), iszero(isOnFieldOrder(y1))) { + burnGas() + } + + // Ensure that the coordinates are between 0 and the field order. + if or(iszero(isOnFieldOrder(x2)), iszero(isOnFieldOrder(y2))) { + burnGas() + } + + // There's no need for transforming into Montgomery form + // for this case. + if and(eq(x1, x2), eq(submod(0, y1, P()), y2)) { + // P + (-P) = Infinity + + let m_x1 := intoMontgomeryForm(x1) + let m_y1 := intoMontgomeryForm(y1) + let m_x2 := intoMontgomeryForm(x2) + let m_y2 := intoMontgomeryForm(y2) + + // Ensure that the points are in the curve (Y^2 = X^3 + 3). + if or(iszero(pointIsInCurve(m_x1, m_y1)), iszero(pointIsInCurve(m_x2, m_y2))) { + burnGas() + } + + // We just need to go into the Montgomery form to perform the + // computations in pointIsInCurve, but we do not need to come back. + + mstore(0, 0) + mstore(32, 0) + return(0, 64) + } + + if and(eq(x1, x2), and(iszero(eq(y1, y2)), iszero(eq(y1, submod(0, y2, P()))))) { + burnGas() + } + + if and(eq(x1, x2), eq(y1, y2)) { + // P + P = 2P + + let x := intoMontgomeryForm(x1) + let y := intoMontgomeryForm(y1) + + // Ensure that the points are in the curve (Y^2 = X^3 + 3). + if iszero(pointIsInCurve(x, y)) { + burnGas() + } + + // (3 * x1^2 + a) / (2 * y1) + let x1_squared := montgomeryMul(x, x) + let slope := montgomeryDiv(addmod(x1_squared, addmod(x1_squared, x1_squared, P()), P()), addmod(y, y, P())) + // x3 = slope^2 - 2 * x1 + let x3 := submod(montgomeryMul(slope, slope), addmod(x, x, P()), P()) + // y3 = slope * (x1 - x3) - y1 + let y3 := submod(montgomeryMul(slope, submod(x, x3, P())), y, P()) + + x3 := outOfMontgomeryForm(x3) + y3 := outOfMontgomeryForm(y3) + + mstore(0, x3) + mstore(32, y3) + return(0, 64) + } + + // P1 + P2 = P3 + + x1 := intoMontgomeryForm(x1) + y1 := intoMontgomeryForm(y1) + x2 := intoMontgomeryForm(x2) + y2 := intoMontgomeryForm(y2) + + // Ensure that the points are in the curve (Y^2 = X^3 + 3). + if or(iszero(pointIsInCurve(x1, y1)), iszero(pointIsInCurve(x2, y2))) { + burnGas() + } + + // (y2 - y1) / (x2 - x1) + let slope := montgomeryDiv(submod(y2, y1, P()), submod(x2, x1, P())) + // x3 = slope^2 - x1 - x2 + let x3 := submod(montgomeryMul(slope, slope), addmod(x1, x2, P()), P()) + // y3 = slope * (x1 - x3) - y1 + let y3 := submod(montgomeryMul(slope, submod(x1, x3, P())), y1, P()) + + x3 := outOfMontgomeryForm(x3) + y3 := outOfMontgomeryForm(y3) + + mstore(0, x3) + mstore(32, y3) + return(0, 64) + } + } +} diff --git a/etc/system-contracts/contracts/precompiles/EcMul.yul b/etc/system-contracts/contracts/precompiles/EcMul.yul new file mode 100644 index 00000000..83c45ff0 --- /dev/null +++ b/etc/system-contracts/contracts/precompiles/EcMul.yul @@ -0,0 +1,495 @@ +object "EcMul" { + code { + return(0, 0) + } + object "EcMul_deployed" { + code { + //////////////////////////////////////////////////////////////// + // CONSTANTS + //////////////////////////////////////////////////////////////// + + /// @notice Constant function for value one in Montgomery form. + /// @dev This value was precomputed using Python. + /// @return m_one The value one in Montgomery form. + function MONTGOMERY_ONE() -> m_one { + m_one := 6350874878119819312338956282401532409788428879151445726012394534686998597021 + } + + /// @notice Constant function for value three in Montgomery form. + /// @dev This value was precomputed using Python. + /// @return m_three The value three in Montgomery form. + function MONTGOMERY_THREE() -> m_three { + m_three := 19052624634359457937016868847204597229365286637454337178037183604060995791063 + } + + /// @notice Constant function for value 3*b (i.e. 9) in Montgomery form. + /// @dev This value was precomputed using Python. + /// @return m_b3 The value 9 in Montgomery form. + function MONTGOMERY_B3() -> m_b3 { + m_b3 := 13381388159399823366557795051099241510703237597767364208733475022892534956023 + } + + /// @notice Constant function for the alt_bn128 field order. + /// @dev See https://eips.ethereum.org/EIPS/eip-196 for further details. + /// @return ret The alt_bn128 field order. + function P() -> ret { + ret := 21888242871839275222246405745257275088696311157297823662689037894645226208583 + } + + /// @notice Constant function for the pre-computation of R^2 % N for the Montgomery REDC algorithm. + /// @dev R^2 is the Montgomery residue of the value 2^512. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further detals. + /// @dev This value was precomputed using Python. + /// @return ret The value R^2 modulus the curve field order. + function R2_MOD_P() -> ret { + ret := 3096616502983703923843567936837374451735540968419076528771170197431451843209 + } + + /// @notice Constant function for the pre-computation of N' for the Montgomery REDC algorithm. + /// @dev N' is a value such that NN' = -1 mod R, with N being the curve field order. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_REDC_algorithm for further detals. + /// @dev This value was precomputed using Python. + /// @return ret The value N'. + function N_PRIME() -> ret { + ret := 111032442853175714102588374283752698368366046808579839647964533820976443843465 + } + + // //////////////////////////////////////////////////////////////// + // HELPER FUNCTIONS + // //////////////////////////////////////////////////////////////// + + /// @dev Executes the `precompileCall` opcode. + function precompileCall(precompileParams, gasToBurn) -> ret { + // Compiler simulation for calling `precompileCall` opcode + ret := verbatim_2i_1o("precompile", precompileParams, gasToBurn) + } + + /// @notice Burns remaining gas until revert. + /// @dev This function is used to burn gas in the case of a failed precompile call. + function burnGas() { + // Precompiles that do not have a circuit counterpart + // will burn the provided gas by calling this function. + precompileCall(0, gas()) + } + + /// @notice Retrieves the highest half of the multiplication result. + /// @param multiplicand The value to multiply. + /// @param multiplier The multiplier. + /// @return ret The highest half of the multiplication result. + function getHighestHalfOfMultiplication(multiplicand, multiplier) -> ret { + ret := verbatim_2i_1o("mul_high", multiplicand, multiplier) + } + + /// @notice Computes an addition and checks for overflow. + /// @param augend The value to add to. + /// @param addend The value to add. + /// @return sum The sum of the two values. + /// @return overflowed True if the addition overflowed, false otherwise. + function overflowingAdd(augend, addend) -> sum, overflowed { + sum := add(augend, addend) + overflowed := lt(sum, augend) + } + + /// @notice Checks if the LSB of a number is 1. + /// @param x The number to check. + /// @return ret True if the LSB is 1, false otherwise. + function lsbIsOne(x) -> ret { + ret := and(x, 1) + } + + /// @notice Computes the inverse in Montgomery Form of a number in Montgomery Form. + /// @dev Reference: https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/montgomery_backed_prime_fields.rs#L169 + /// @dev Let `base` be a number in Montgomery Form, then base = a*R mod P() being `a` the base number (not in Montgomery Form) + /// @dev Let `inv` be the inverse of a number `a` in Montgomery Form, then inv = a^(-1)*R mod P() + /// @dev The original binary extended euclidean algorithms takes a number a and returns a^(-1) mod N + /// @dev In our case N is P(), and we'd like the input and output to be in Montgomery Form (a*R mod P() + /// @dev and a^(-1)*R mod P() respectively). + /// @dev If we just pass the input as a number in Montgomery Form the result would be a^(-1)*R^(-1) mod P(), + /// @dev but we want it to be a^(-1)*R mod P(). + /// @dev For that, we take advantage of the algorithm's linearity and multiply the result by R^2 mod P() + /// @dev to get R^2*a^(-1)*R^(-1) mod P() = a^(-1)*R mod P() as the desired result in Montgomery Form. + /// @dev `inv` takes the value of `b` or `c` being the result sometimes `b` and sometimes `c`. In paper + /// @dev multiplying `b` or `c` by R^2 mod P() results on starting their values as b = R2_MOD_P() and c = 0. + /// @param base A number `a` in Montgomery Form, then base = a*R mod P(). + /// @return inv The inverse of a number `a` in Montgomery Form, then inv = a^(-1)*R mod P(). + function binaryExtendedEuclideanAlgorithm(base) -> inv { + let modulus := P() + let u := base + let v := modulus + // Avoids unnecessary reduction step. + let b := R2_MOD_P() + let c := 0 + + for {} and(iszero(eq(u, 1)), iszero(eq(v, 1))) {} { + for {} iszero(and(u, 1)) {} { + u := shr(1, u) + let current := b + switch and(current, 1) + case 0 { + b := shr(1, b) + } + case 1 { + b := shr(1, add(b, modulus)) + } + } + + for {} iszero(and(v, 1)) {} { + v := shr(1, v) + let current := c + switch and(current, 1) + case 0 { + c := shr(1, c) + } + case 1 { + c := shr(1, add(c, modulus)) + } + } + + switch gt(v, u) + case 0 { + u := sub(u, v) + if lt(b, c) { + b := add(b, modulus) + } + b := sub(b, c) + } + case 1 { + v := sub(v, u) + if lt(c, b) { + c := add(c, modulus) + } + c := sub(c, b) + } + } + + switch eq(u, 1) + case 0 { + inv := c + } + case 1 { + inv := b + } + } + + /// @notice Implementation of the Montgomery reduction algorithm (a.k.a. REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_The_REDC_algorithm + /// @param lowestHalfOfT The lowest half of the value T. + /// @param higherHalfOfT The higher half of the value T. + /// @return S The result of the Montgomery reduction. + function REDC(lowestHalfOfT, higherHalfOfT) -> S { + let m := mul(lowestHalfOfT, N_PRIME()) + let hi := add(higherHalfOfT, getHighestHalfOfMultiplication(m, P())) + let lo, overflowed := overflowingAdd(lowestHalfOfT, mul(m, P())) + if overflowed { + hi := add(hi, 1) + } + S := hi + if iszero(lt(hi, P())) { + S := sub(hi, P()) + } + } + + /// @notice Encodes a field element into the Montgomery form using the Montgomery reduction algorithm (REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_The_REDC_algorithm for further details on transforming a field element into the Montgomery form. + /// @param a The field element to encode. + /// @return ret The field element in Montgomery form. + function intoMontgomeryForm(a) -> ret { + let hi := getHighestHalfOfMultiplication(a, R2_MOD_P()) + let lo := mul(a, R2_MOD_P()) + ret := REDC(lo, hi) + } + + /// @notice Decodes a field element out of the Montgomery form using the Montgomery reduction algorithm (REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_The_REDC_algorithm for further details on transforming a field element out of the Montgomery form. + /// @param m The field element in Montgomery form to decode. + /// @return ret The decoded field element. + function outOfMontgomeryForm(m) -> ret { + let hi := 0 + let lo := m + ret := REDC(lo, hi) + } + + /// @notice Computes the Montgomery addition. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_The_REDC_algorithm for further details on the Montgomery multiplication. + /// @param augend The augend in Montgomery form. + /// @param addend The addend in Montgomery form. + /// @return ret The result of the Montgomery addition. + function montgomeryAdd(augend, addend) -> ret { + ret := add(augend, addend) + if iszero(lt(ret, P())) { + ret := sub(ret, P()) + } + } + + /// @notice Computes the Montgomery subtraction. + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_The_REDC_algorithm for further details on the Montgomery multiplication. + /// @param minuend The minuend in Montgomery form. + /// @param subtrahend The subtrahend in Montgomery form. + /// @return ret The result of the Montgomery subtraction. + function montgomerySub(minuend, subtrahend) -> ret { + ret := montgomeryAdd(minuend, sub(P(), subtrahend)) + } + + /// @notice Computes the Montgomery multiplication using the Montgomery reduction algorithm (REDC). + /// @dev See https://en.wikipedia.org/wiki/Montgomery_modular_multiplication#The_The_REDC_algorithm for further details on the Montgomery multiplication. + /// @param multiplicand The multiplicand in Montgomery form. + /// @param multiplier The multiplier in Montgomery form. + /// @return ret The result of the Montgomery multiplication. + function montgomeryMul(multiplicand, multiplier) -> ret { + let hi := getHighestHalfOfMultiplication(multiplicand, multiplier) + let lo := mul(multiplicand, multiplier) + ret := REDC(lo, hi) + } + + /// @notice Computes the Montgomery modular inverse skipping the Montgomery reduction step. + /// @dev The Montgomery reduction step is skept because a modification in the binary extended Euclidean algorithm is used to compute the modular inverse. + /// @dev See the function `binaryExtendedEuclideanAlgorithm` for further details. + /// @param a The field element in Montgomery form to compute the modular inverse of. + /// @return invmod The result of the Montgomery modular inverse (in Montgomery form). + function montgomeryModularInverse(a) -> invmod { + invmod := binaryExtendedEuclideanAlgorithm(a) + } + + /// @notice Checks if a coordinate is on the curve field order. + /// @dev A coordinate is on the curve field order if it is on the range [0, curveFieldOrder). + /// @param coordinate The coordinate to check. + /// @return ret True if the coordinate is in the range, false otherwise. + function coordinateIsOnFieldOrder(coordinate) -> ret { + ret := lt(coordinate, P()) + } + + /// @notice Checks if affine coordinates are on the curve field order. + /// @dev Affine coordinates are on the curve field order if both coordinates are on the range [0, curveFieldOrder). + /// @param x The x coordinate to check. + /// @param y The y coordinate to check. + /// @return ret True if the coordinates are in the range, false otherwise. + function affinePointCoordinatesAreOnFieldOrder(x, y) -> ret { + ret := and(coordinateIsOnFieldOrder(x), coordinateIsOnFieldOrder(y)) + } + + /// @notice Checks if projective coordinates are on the curve field order. + /// @dev Projective coordinates are on the curve field order if the coordinates are on the range [0, curveFieldOrder) and the z coordinate is not zero. + /// @param x The x coordinate to check. + /// @param y The y coordinate to check. + /// @param z The z coordinate to check. + /// @return ret True if the coordinates are in the range, false otherwise. + function projectivePointCoordinatesAreOnFieldOrder(x, y, z) -> ret { + let _x, _y := projectiveIntoAffine(x, y, z) + ret := and(z, affinePointCoordinatesAreOnFieldOrder(_x, _y)) + } + + // @notice Checks if a point in affine coordinates in Montgomery form is on the curve. + // @dev The curve in question is the alt_bn128 curve. + // @dev The Short Weierstrass equation of the curve is y^2 = x^3 + 3. + // @param x The x coordinate of the point in Montgomery form. + // @param y The y coordinate of the point in Montgomery form. + // @return ret True if the point is on the curve, false otherwise. + function affinePointIsOnCurve(x, y) -> ret { + let ySquared := montgomeryMul(y, y) + let xSquared := montgomeryMul(x, x) + let xQubed := montgomeryMul(xSquared, x) + let xQubedPlusThree := montgomeryAdd(xQubed, MONTGOMERY_THREE()) + + ret := eq(ySquared, xQubedPlusThree) + } + + /// @notice Checks if a point in affine coordinates is the point at infinity. + /// @dev The point at infinity is defined as the point (0, 0). + /// @dev See https://eips.ethereum.org/EIPS/eip-196 for further details. + /// @param x The x coordinate of the point in Montgomery form. + /// @param y The y coordinate of the point in Montgomery form. + /// @return ret True if the point is the point at infinity, false otherwise. + function affinePointIsInfinity(x, y) -> ret { + ret := and(iszero(x), iszero(y)) + } + + /// @notice Checks if a point in projective coordinates in Montgomery form is the point at infinity. + /// @dev The point at infinity is defined as the point (0, 0, 0). + /// @param x The x coordinate of the point in Montgomery form. + /// @param y The y coordinate of the point in Montgomery form. + /// @param z The z coordinate of the point in Montgomery form. + /// @return ret True if the point is the point at infinity, false otherwise. + function projectivePointIsInfinity(x, y, z) -> ret { + ret := iszero(z) + } + + /// @notice Converts a point in affine coordinates to projective coordinates in Montgomery form. + /// @dev The point at infinity is defined as the point (0, 0, 0). + /// @dev For performance reasons, the point is assumed to be previously checked to be on the + /// @dev curve and not the point at infinity. + /// @param xp The x coordinate of the point P in affine coordinates in Montgomery form. + /// @param yp The y coordinate of the point P in affine coordinates in Montgomery form. + /// @return xr The x coordinate of the point P in projective coordinates in Montgomery form. + /// @return yr The y coordinate of the point P in projective coordinates in Montgomery form. + /// @return zr The z coordinate of the point P in projective coordinates in Montgomery form. + function projectiveFromAffine(xp, yp) -> xr, yr, zr { + xr := xp + yr := yp + zr := MONTGOMERY_ONE() + } + + /// @notice Converts a point in projective coordinates to affine coordinates in Montgomery form. + /// @dev See https://www.nayuki.io/page/elliptic-curve-point-addition-in-projective-coordinates for further details. + /// @dev Reverts if the point is not on the curve. + /// @param xp The x coordinate of the point P in projective coordinates in Montgomery form. + /// @param yp The y coordinate of the point P in projective coordinates in Montgomery form. + /// @param zp The z coordinate of the point P in projective coordinates in Montgomery form. + /// @return xr The x coordinate of the point P in affine coordinates in Montgomery form. + /// @return yr The y coordinate of the point P in affine coordinates in Montgomery form. + function projectiveIntoAffine(xp, yp, zp) -> xr, yr { + if zp { + let zp_inv := montgomeryModularInverse(zp) + xr := montgomeryMul(xp, zp_inv) + yr := montgomeryMul(yp, zp_inv) + } + } + + /// @notice Doubles a point in projective coordinates in Montgomery form. + /// @dev See Algorithm 9 in https://eprint.iacr.org/2015/1060.pdf for further details. + /// @dev The point is assumed to be on the curve. + /// @dev It works correctly for the point at infinity. + /// @param xp The x coordinate of the point P in projective coordinates in Montgomery form. + /// @param yp The y coordinate of the point P in projective coordinates in Montgomery form. + /// @param zp The z coordinate of the point P in projective coordinates in Montgomery form. + /// @return xr The x coordinate of the point 2P in projective coordinates in Montgomery form. + /// @return yr The y coordinate of the point 2P in projective coordinates in Montgomery form. + /// @return zr The z coordinate of the point 2P in projective coordinates in Montgomery form. + function projectiveDouble(xp, yp, zp) -> xr, yr, zr { + let t0 := montgomeryMul(yp, yp) + zr := montgomeryAdd(t0, t0) + zr := montgomeryAdd(zr, zr) + zr := montgomeryAdd(zr, zr) + let t1 := montgomeryMul(yp, zp) + let t2 := montgomeryMul(zp, zp) + t2 := montgomeryMul(MONTGOMERY_B3(), t2) + xr := montgomeryMul(t2, zr) + yr := montgomeryAdd(t0, t2) + zr := montgomeryMul(t1, zr) + t1 := montgomeryAdd(t2, t2) + t2 := montgomeryAdd(t1, t2) + t0 := montgomerySub(t0, t2) + yr := montgomeryMul(t0, yr) + yr := montgomeryAdd(xr, yr) + t1 := montgomeryMul(xp, yp) + xr := montgomeryMul(t0, t1) + xr := montgomeryAdd(xr, xr) + } + + //////////////////////////////////////////////////////////////// + // FALLBACK + //////////////////////////////////////////////////////////////// + + // Retrieve the coordinates from the calldata + let x := calldataload(0) + let y := calldataload(32) + if iszero(affinePointCoordinatesAreOnFieldOrder(x, y)) { + burnGas() + } + let scalar := calldataload(64) + + if affinePointIsInfinity(x, y) { + // Infinity * scalar = Infinity + return(0x00, 0x40) + } + + let m_x := intoMontgomeryForm(x) + let m_y := intoMontgomeryForm(y) + + // Ensure that the point is in the curve (Y^2 = X^3 + 3). + if iszero(affinePointIsOnCurve(m_x, m_y)) { + burnGas() + } + + if eq(scalar, 0) { + // P * 0 = Infinity + return(0x00, 0x40) + } + if eq(scalar, 1) { + // P * 1 = P + mstore(0x00, x) + mstore(0x20, y) + return(0x00, 0x40) + } + + let xp, yp, zp := projectiveFromAffine(m_x, m_y) + + if eq(scalar, 2) { + let xr, yr, zr := projectiveDouble(xp, yp, zp) + + xr, yr := projectiveIntoAffine(xr, yr, zr) + xr := outOfMontgomeryForm(xr) + yr := outOfMontgomeryForm(yr) + + mstore(0x00, xr) + mstore(0x20, yr) + return(0x00, 0x40) + } + + let xq := xp + let yq := yp + let zq := zp + let xr := 0 + let yr := MONTGOMERY_ONE() + let zr := 0 + for {} scalar {} { + if lsbIsOne(scalar) { + let rIsInfinity := projectivePointIsInfinity(xr, yr, zr) + + if rIsInfinity { + // Infinity + P = P + xr := xq + yr := yq + zr := zq + + xq, yq, zq := projectiveDouble(xq, yq, zq) + // Check next bit + scalar := shr(1, scalar) + continue + } + + let t0 := montgomeryMul(yq, zr) + let t1 := montgomeryMul(yr, zq) + let t := montgomerySub(t0, t1) + let u0 := montgomeryMul(xq, zr) + let u1 := montgomeryMul(xr, zq) + let u := montgomerySub(u0, u1) + + // t = (yq*zr - yr*zq); u = (xq*zr - xr*zq) + if iszero(or(t, u)) { + // P + P = 2P + xr, yr, zr := projectiveDouble(xr, yr, zr) + + xq := xr + yq := yr + zq := zr + // Check next bit + scalar := shr(1, scalar) + continue + } + + // P1 + P2 = P3 + let u2 := montgomeryMul(u, u) + let u3 := montgomeryMul(u2, u) + let v := montgomeryMul(zq, zr) + let w := montgomerySub(montgomeryMul(montgomeryMul(t, t), v), montgomeryMul(u2, montgomeryAdd(u0, u1))) + + xr := montgomeryMul(u, w) + yr := montgomerySub(montgomeryMul(t, montgomerySub(montgomeryMul(u0, u2), w)), montgomeryMul(t0, u3)) + zr := montgomeryMul(u3, v) + } + + xq, yq, zq := projectiveDouble(xq, yq, zq) + // Check next bit + scalar := shr(1, scalar) + } + + xr, yr := projectiveIntoAffine(xr, yr, zr) + xr := outOfMontgomeryForm(xr) + yr := outOfMontgomeryForm(yr) + + mstore(0, xr) + mstore(32, yr) + return(0, 64) + } + } +} diff --git a/etc/system-contracts/contracts/precompiles/Ecrecover.yul b/etc/system-contracts/contracts/precompiles/Ecrecover.yul index 8f8889d5..d0e5924b 100644 --- a/etc/system-contracts/contracts/precompiles/Ecrecover.yul +++ b/etc/system-contracts/contracts/precompiles/Ecrecover.yul @@ -1,10 +1,13 @@ /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The contract used to emulate EVM's ecrecover precompile. * @dev It uses `precompileCall` to call the zkEVM built-in precompiles. */ object "Ecrecover" { - code { } + code { + return(0, 0) + } object "Ecrecover_deployed" { code { //////////////////////////////////////////////////////////////// diff --git a/etc/system-contracts/contracts/precompiles/Keccak256.yul b/etc/system-contracts/contracts/precompiles/Keccak256.yul index 15c39029..b078d580 100644 --- a/etc/system-contracts/contracts/precompiles/Keccak256.yul +++ b/etc/system-contracts/contracts/precompiles/Keccak256.yul @@ -1,12 +1,15 @@ /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The contract used to emulate EVM's keccak256 opcode. * @dev It accepts the data to be hashed, pad it by the specification * and uses `precompileCall` to call the zkEVM built-in precompiles. * @dev Thus keccak256 precompile circuit operates over padded data to perform efficient sponge round computation. */ object "Keccak256" { - code { } + code { + return(0, 0) + } object "Keccak256_deployed" { code { //////////////////////////////////////////////////////////////// diff --git a/etc/system-contracts/contracts/precompiles/SHA256.yul b/etc/system-contracts/contracts/precompiles/SHA256.yul index d594f55d..fba02d5e 100644 --- a/etc/system-contracts/contracts/precompiles/SHA256.yul +++ b/etc/system-contracts/contracts/precompiles/SHA256.yul @@ -1,12 +1,15 @@ /** * @author Matter Labs + * @custom:security-contact security@matterlabs.dev * @notice The contract used to emulate EVM's sha256 precompile. * @dev It accepts the data to be hashed, pad it by the specification * and uses `precompileCall` to call the zkEVM built-in precompiles. * @dev Thus sha256 precompile circuit operates over padded data to perform efficient sponge round computation. */ object "SHA256" { - code { } + code { + return(0, 0) + } object "SHA256_deployed" { code { //////////////////////////////////////////////////////////////// diff --git a/etc/system-contracts/contracts/test-contracts/Callable.sol b/etc/system-contracts/contracts/test-contracts/Callable.sol new file mode 100644 index 00000000..e7477e0c --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/Callable.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract Callable { + event Called(uint256 value, bytes data); + + fallback() external payable { + uint256 len; + assembly { + len := calldatasize() + } + bytes memory data = new bytes(len); + assembly { + calldatacopy(add(data, 0x20), 0, len) + } + emit Called(msg.value, data); + } +} diff --git a/etc/system-contracts/contracts/test-contracts/DelegateCaller.sol b/etc/system-contracts/contracts/test-contracts/DelegateCaller.sol new file mode 100644 index 00000000..caa5aae6 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/DelegateCaller.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +contract DelegateCaller { + function delegateCall(address _to) external payable { + assembly { + calldatacopy(0, 0, calldatasize()) + let result := delegatecall(gas(), _to, 0, calldatasize(), 0, 0) + returndatacopy(0, 0, returndatasize()) + switch result + case 0 { + revert(0, returndatasize()) + } + default { + return(0, returndatasize()) + } + } + } +} diff --git a/etc/system-contracts/contracts/test-contracts/Deployable.sol b/etc/system-contracts/contracts/test-contracts/Deployable.sol new file mode 100644 index 00000000..be35861a --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/Deployable.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract Deployable { + event Deployed(uint256 value, bytes data); + + constructor() payable { + uint256 len; + assembly { + len := codesize() + } + bytes memory data = new bytes(len); + assembly { + codecopy(add(data, 0x20), 0, len) + } + emit Deployed(msg.value, data); + } +} diff --git a/etc/system-contracts/contracts/test-contracts/DummyUpgrade.sol b/etc/system-contracts/contracts/test-contracts/DummyUpgrade.sol new file mode 100644 index 00000000..b369f9a9 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/DummyUpgrade.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract DummyUpgrade { + event Upgraded(); + + function performUpgrade() public { + emit Upgraded(); + } +} diff --git a/etc/system-contracts/contracts/test-contracts/EventWriterTest.sol b/etc/system-contracts/contracts/test-contracts/EventWriterTest.sol new file mode 100644 index 00000000..faf09cd7 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/EventWriterTest.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract EventWriterTest { + event ZeroTopics(bytes data) anonymous; + event OneTopic(bytes data); + event TwoTopics(uint256 indexed topic1, bytes data); + event ThreeTopics(uint256 indexed topic1, uint256 indexed topic2, bytes data); + event FourTopics(uint256 indexed topic1, uint256 indexed topic2, uint256 indexed topic3, bytes data); + + function zeroTopics(bytes calldata data) external { + emit ZeroTopics(data); + } + + function oneTopic(bytes calldata data) external { + emit OneTopic(data); + } + + function twoTopics(uint256 topic1, bytes calldata data) external { + emit TwoTopics(topic1, data); + } + + function threeTopics(uint256 topic1, uint256 topic2, bytes calldata data) external { + emit ThreeTopics(topic1, topic2, data); + } + + function fourTopics(uint256 topic1, uint256 topic2, uint256 topic3, bytes calldata data) external { + emit FourTopics(topic1, topic2, topic3, data); + } +} diff --git a/etc/system-contracts/contracts/test-contracts/MockERC20Approve.sol b/etc/system-contracts/contracts/test-contracts/MockERC20Approve.sol new file mode 100644 index 00000000..c9931389 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/MockERC20Approve.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract MockERC20Approve { + event Approved(address to, uint256 value); + + function approve(address spender, uint256 value) external returns (bool) { + emit Approved(spender, value); + return true; + } + + function allowance(address owner, address spender) external view returns (uint256) { + return 0; + } +} diff --git a/etc/system-contracts/contracts/test-contracts/MockKnownCodesStorage.sol b/etc/system-contracts/contracts/test-contracts/MockKnownCodesStorage.sol new file mode 100644 index 00000000..7cec142e --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/MockKnownCodesStorage.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract MockKnownCodesStorage { + event MockBytecodePublished(bytes32 indexed bytecodeHash); + + function markBytecodeAsPublished(bytes32 _bytecodeHash) external { + emit MockBytecodePublished(_bytecodeHash); + } + + // To be able to deploy original know codes storage again + function getMarker(bytes32) public pure returns (uint256 marker) { + return 1; + } + + // To prevent failing during calls from the bootloader + fallback() external {} +} diff --git a/etc/system-contracts/contracts/test-contracts/MockL1Messenger.sol b/etc/system-contracts/contracts/test-contracts/MockL1Messenger.sol new file mode 100644 index 00000000..b24da511 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/MockL1Messenger.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract MockL1Messenger { + event MockBytecodeL1Published(bytes32 indexed bytecodeHash); + + function requestBytecodeL1Publication(bytes32 _bytecodeHash) external { + emit MockBytecodeL1Published(_bytecodeHash); + } + + // To prevent failing during calls from the bootloader + function sendToL1(bytes calldata) external returns (bytes32) { + return bytes32(0); + } +} diff --git a/etc/system-contracts/contracts/test-contracts/NotSystemCaller.sol b/etc/system-contracts/contracts/test-contracts/NotSystemCaller.sol new file mode 100644 index 00000000..0c85deb6 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/NotSystemCaller.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +contract NotSystemCaller { + address immutable to; + + constructor(address _to) { + to = _to; + } + + fallback() external payable { + address _to = to; + assembly { + calldatacopy(0, 0, calldatasize()) + + let result := call(gas(), _to, callvalue(), 0, calldatasize(), 0, 0) + + returndatacopy(0, 0, returndatasize()) + + switch result + case 0 { + revert(0, returndatasize()) + } + default { + return(0, returndatasize()) + } + } + } +} diff --git a/etc/system-contracts/contracts/test-contracts/SystemCaller.sol b/etc/system-contracts/contracts/test-contracts/SystemCaller.sol new file mode 100644 index 00000000..58adfce2 --- /dev/null +++ b/etc/system-contracts/contracts/test-contracts/SystemCaller.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.20; + +import {SystemContractsCaller} from "../libraries/SystemContractsCaller.sol"; + +contract SystemCaller { + address immutable to; + + constructor(address _to) { + to = _to; + } + + fallback() external payable { + bytes memory result = SystemContractsCaller.systemCallWithPropagatedRevert( + uint32(gasleft()), + to, + uint128(msg.value), + msg.data + ); + assembly { + return(add(result, 0x20), mload(result)) + } + } +} diff --git a/etc/system-contracts/contracts/test-contracts/TestSystemContract.sol b/etc/system-contracts/contracts/test-contracts/TestSystemContract.sol index f4e08c62..8eba841d 100644 --- a/etc/system-contracts/contracts/test-contracts/TestSystemContract.sol +++ b/etc/system-contracts/contracts/test-contracts/TestSystemContract.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.20; import "../Constants.sol"; @@ -29,7 +29,7 @@ contract TestSystemContract is ISystemContract { { uint256 gasBefore = gasleft(); - SystemContractHelper.precompileCall(0, 10000); + SystemContractHelper.unsafePrecompileCall(0, 10000); uint256 gasAfter = gasleft(); require(gasBefore - gasAfter > 10000, "Did not spend enough gas"); require(gasBefore - gasAfter < 10100, "Spent too much gas"); diff --git a/etc/system-contracts/contracts/test-contracts/TestSystemContractHelper.sol b/etc/system-contracts/contracts/test-contracts/TestSystemContractHelper.sol index 6a114e4b..2f9f7073 100644 --- a/etc/system-contracts/contracts/test-contracts/TestSystemContractHelper.sol +++ b/etc/system-contracts/contracts/test-contracts/TestSystemContractHelper.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8; +pragma solidity 0.8.20; import {MAX_SYSTEM_CONTRACT_ADDRESS, MSG_VALUE_SYSTEM_CONTRACT} from "../Constants.sol"; diff --git a/etc/system-contracts/contracts/tests/Counter.sol b/etc/system-contracts/contracts/tests/Counter.sol deleted file mode 100644 index 736a8b78..00000000 --- a/etc/system-contracts/contracts/tests/Counter.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -contract Counter { - uint256 public counter; - - function increment() public { - counter += 1; - } -} diff --git a/etc/system-contracts/contracts/tests/TransactionHelperTest.sol b/etc/system-contracts/contracts/tests/TransactionHelperTest.sol deleted file mode 100644 index df8e7e67..00000000 --- a/etc/system-contracts/contracts/tests/TransactionHelperTest.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -import "../libraries/TransactionHelper.sol"; - -contract TransactionHelperTest { - using TransactionHelper for Transaction; - - function encodeHash(Transaction calldata _transaction) public view returns (bytes32 resultHash) { - resultHash = _transaction.encodeHash(); - } -} diff --git a/etc/system-contracts/hardhat.config.ts b/etc/system-contracts/hardhat.config.ts index 6756762b..0ae0329a 100644 --- a/etc/system-contracts/hardhat.config.ts +++ b/etc/system-contracts/hardhat.config.ts @@ -1,37 +1,55 @@ -import '@nomiclabs/hardhat-solpp'; -import '@typechain/hardhat' -import '@nomiclabs/hardhat-ethers'; -import '@matterlabs/hardhat-zksync-solc'; +import "@matterlabs/hardhat-zksync-chai-matchers"; +import "@matterlabs/hardhat-zksync-solc"; +import "@nomiclabs/hardhat-ethers"; +import "@nomiclabs/hardhat-solpp"; +import "@typechain/hardhat"; -const systemConfig = require('./SystemConfig.json'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const systemConfig = require("./SystemConfig.json"); export default { zksolc: { - version: '1.3.14', - compilerSource: 'binary', + version: "1.3.14", + compilerSource: "binary", settings: { - isSystem: true - } + isSystem: true, + }, }, zkSyncDeploy: { - zkSyncNetwork: 'http://localhost:3050', - ethNetwork: 'http://localhost:8545' + zkSyncNetwork: "http://localhost:3050", + ethNetwork: "http://localhost:8545", }, solidity: { - version: '0.8.17' + version: "0.8.20", + settings: { + optimizer: { + enabled: true, + runs: 9999999, + }, + outputSelection: { + "*": { + "*": ["storageLayout"], + }, + }, + }, }, solpp: { defs: (() => { return { ECRECOVER_COST_GAS: systemConfig.ECRECOVER_COST_GAS, KECCAK_ROUND_COST_GAS: systemConfig.KECCAK_ROUND_COST_GAS, - SHA256_ROUND_COST_GAS: systemConfig.SHA256_ROUND_COST_GAS - } - })() + SHA256_ROUND_COST_GAS: systemConfig.SHA256_ROUND_COST_GAS, + }; + })(), }, networks: { hardhat: { - zksync: true - } - } + zksync: true, + }, + zkSyncTestNode: { + url: "http://127.0.0.1:8011", + ethNetwork: "", + zksync: true, + }, + }, }; diff --git a/etc/system-contracts/package.json b/etc/system-contracts/package.json index 816aecd8..ad977d73 100644 --- a/etc/system-contracts/package.json +++ b/etc/system-contracts/package.json @@ -8,23 +8,36 @@ "@nomiclabs/hardhat-solpp": "^2.0.1", "commander": "^9.4.1", "ethers": "^5.7.0", - "hardhat": "^2.11.0", + "hardhat": "=2.16.0", "preprocess": "^3.2.0", - "zksync-web3": "^0.13.0" + "zksync-web3": "^0.14.3" }, "devDependencies": { + "@matterlabs/eslint-config-typescript": "^1.1.2", + "@matterlabs/hardhat-zksync-chai-matchers": "^0.1.4", "@matterlabs/hardhat-zksync-solc": "^0.4.2", + "@matterlabs/prettier-config": "^1.0.3", + "@nomicfoundation/hardhat-chai-matchers": "^1.0.3", "@nomiclabs/hardhat-ethers": "^2.0.6", "@typechain/ethers-v5": "^10.0.0", - "@typechain/ethers-v6": "0.4.0", - "@typechain/hardhat": "8.0.0", + "@typechain/hardhat": "^7.0.0", "@types/chai": "^4.3.1", + "@types/lodash": "^4.14.199", "@types/mocha": "^9.1.1", "@types/node": "^17.0.34", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", "chai": "^4.3.6", + "eslint": "^8.51.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-prettier": "^5.0.1", + "lodash": "^4.17.21", + "markdownlint-cli": "^0.33.0", "mocha": "^10.0.0", - "prettier": "^2.3.0", - "prettier-plugin-solidity": "^1.0.0-alpha.27", + "prettier": "^3.0.3", + "prettier-plugin-solidity": "^1.1.3", + "solhint": "^3.6.2", "template-file": "^6.0.1", "ts-generator": "^0.1.1", "ts-node": "^10.7.0", @@ -41,10 +54,25 @@ ] }, "scripts": { - "build": "hardhat compile", - "clean": "hardhat clean && rm -rf ./bootloader/build", - "preprocess": "rm -rf ./bootloader/build && yarn ts-node scripts/process.ts", - "build-bootloader": "yarn hardhat run ./scripts/compile-yul.ts" - }, - "packageManager": "yarn@1.22.19" -} \ No newline at end of file + "build": "yarn build:sol && yarn build:yul", + "build:sol": "hardhat compile", + "build:yul": "yarn preprocess:yul && yarn compile-yul", + "calculate-hashes:check": "ts-node scripts/calculate-hashes.ts --check-only", + "calculate-hashes:fix": "ts-node scripts/calculate-hashes.ts", + "clean": "yarn clean:sol && yarn clean:yul", + "clean:sol": "hardhat clean", + "clean:yul": "rm -rf ./bootloader/build ./bootloader/tests/artifacts ./contracts/artifacts ./contracts/precompiles/artifacts", + "compile-yul": "ts-node scripts/compile-yul.ts", + "deploy-preimages": "ts-node scripts/deploy-preimages.ts", + "lint:check": "yarn lint:md && yarn lint:sol && yarn lint:ts && yarn prettier:check", + "lint:fix": "yarn lint:md --fix && yarn lint:sol --fix && yarn lint:ts --fix && yarn prettier:fix", + "lint:md": "markdownlint \"**/*.md\"", + "lint:sol": "solhint \"contracts/**/*.sol\"", + "lint:ts": "eslint .", + "preprocess:yul": "rm -rf ./bootloader/build && yarn ts-node scripts/process.ts", + "prettier:check": "prettier --check \"**/*.{js,json,md,sol,ts,yaml}\"", + "prettier:fix": "prettier --write \"**/*.{js,json,md,sol,ts,yaml}\"", + "test": "hardhat test --network zkSyncTestNode", + "test:bootloader": "cd bootloader/test_infra && cargo run" + } +} diff --git a/etc/system-contracts/scripts/calculate-hashes.ts b/etc/system-contracts/scripts/calculate-hashes.ts new file mode 100644 index 00000000..bc7fb007 --- /dev/null +++ b/etc/system-contracts/scripts/calculate-hashes.ts @@ -0,0 +1,230 @@ +import { ethers } from "ethers"; +import * as fs from "fs"; +import _ from "lodash"; +import os from "os"; +import { join } from "path"; +import { hashBytecode } from "zksync-web3/build/src/utils"; + +type ContractDetails = { + contractName: string; + bytecodePath: string; + sourceCodePath: string; +}; + +type Hashes = { + bytecodeHash: string; + sourceCodeHash: string; +}; + +type SystemContractHashes = ContractDetails & Hashes; + +const findDirsEndingWith = + (endingWith: string) => + (path: string): string[] => { + const absolutePath = makePathAbsolute(path); + try { + const dirs = fs.readdirSync(absolutePath, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()); + const dirsEndingWithSol = dirs.filter((dirent) => dirent.name.endsWith(endingWith)); + return dirsEndingWithSol.map((dirent) => dirent.name); + } catch (err) { + const msg = err instanceof Error ? err.message : "Unknown error"; + throw new Error(`Failed to read directory: ${absolutePath} Error: ${msg}`); + } + }; + +const SOLIDITY_ARTIFACTS_DIR = "artifacts-zk"; + +const getSolidityContractDetails = (dir: string, contractName: string): ContractDetails => { + const bytecodePath = join(SOLIDITY_ARTIFACTS_DIR, dir, contractName + ".sol", contractName + ".json"); + const sourceCodePath = join(dir, contractName + ".sol"); + return { + contractName, + bytecodePath, + sourceCodePath, + }; +}; + +const getSolidityContractsDetails = (dir: string): ContractDetails[] => { + const bytecodesDir = join(SOLIDITY_ARTIFACTS_DIR, dir); + const dirsEndingWithSol = findDirsEndingWith(".sol")(bytecodesDir); + const contractNames = dirsEndingWithSol.map((d) => d.replace(".sol", "")); + const solidityContractsDetails = contractNames.map((c) => getSolidityContractDetails(dir, c)); + return solidityContractsDetails; +}; + +const YUL_ARTIFACTS_DIR = "artifacts"; + +const getYulContractDetails = (dir: string, contractName: string): ContractDetails => { + const bytecodePath = join(dir, YUL_ARTIFACTS_DIR, contractName + ".yul", contractName + ".yul.zbin"); + const sourceCodePath = join(dir, contractName + ".yul"); + return { + contractName, + bytecodePath, + sourceCodePath, + }; +}; + +const getYulContractsDetails = (dir: string): ContractDetails[] => { + const bytecodesDir = join(dir, YUL_ARTIFACTS_DIR); + const dirsEndingWithYul = findDirsEndingWith(".yul")(bytecodesDir); + const contractNames = dirsEndingWithYul.map((d) => d.replace(".yul", "")); + const yulContractsDetails = contractNames.map((c) => getYulContractDetails(dir, c)); + return yulContractsDetails; +}; + +const makePathAbsolute = (path: string): string => { + return join(__dirname, "..", path); +}; + +const readSourceCode = (details: ContractDetails): string => { + const absolutePath = makePathAbsolute(details.sourceCodePath); + try { + return ethers.utils.hexlify(fs.readFileSync(absolutePath)); + } catch (err) { + const msg = err instanceof Error ? err.message : "Unknown error"; + throw new Error(`Failed to read source code for ${details.contractName}: ${absolutePath} Error: ${msg}`); + } +}; + +const readBytecode = (details: ContractDetails): string => { + const absolutePath = makePathAbsolute(details.bytecodePath); + try { + if (details.bytecodePath.endsWith(".json")) { + const jsonFile = fs.readFileSync(absolutePath, "utf8"); + return ethers.utils.hexlify(JSON.parse(jsonFile).bytecode); + } else { + return ethers.utils.hexlify(fs.readFileSync(absolutePath)); + } + } catch (err) { + const msg = err instanceof Error ? err.message : "Unknown error"; + throw new Error(`Failed to read bytecode for ${details.contractName}: ${details.bytecodePath} Error: ${msg}`); + } +}; + +const getHashes = (contractName: string, sourceCode: string, bytecode: string): Hashes => { + try { + return { + bytecodeHash: ethers.utils.hexlify(hashBytecode(bytecode)), + // The extra checks performed by the hashBytecode function are not needed for the source code, therefore + // sha256 is used for simplicity + sourceCodeHash: ethers.utils.sha256(sourceCode), + }; + } catch (err) { + const msg = err instanceof Error ? err.message : "Unknown error"; + throw new Error(`Failed to calculate hashes for ${contractName} Error: ${msg}`); + } +}; + +const getSystemContractsHashes = (systemContractsDetails: ContractDetails[]): SystemContractHashes[] => + systemContractsDetails.map((contractDetails) => { + const sourceCode = readSourceCode(contractDetails); + const bytecode = readBytecode(contractDetails); + const hashes = getHashes(contractDetails.contractName, sourceCode, bytecode); + + const systemContractHashes: SystemContractHashes = { + ...contractDetails, + ...hashes, + }; + + return systemContractHashes; + }); + +const readSystemContractsHashesFile = (path: string): SystemContractHashes[] => { + const absolutePath = makePathAbsolute(path); + try { + const file = fs.readFileSync(absolutePath, "utf8"); + const parsedFile = JSON.parse(file); + return parsedFile; + } catch (err) { + const msg = err instanceof Error ? err.message : "Unknown error"; + throw new Error(`Failed to read file: ${absolutePath} Error: ${msg}`); + } +}; + +const saveSystemContractsHashesFile = (path: string, systemContractsHashes: SystemContractHashes[]) => { + const absolutePath = makePathAbsolute(path); + try { + fs.writeFileSync(absolutePath, JSON.stringify(systemContractsHashes, null, 2) + os.EOL); + } catch (err) { + const msg = err instanceof Error ? err.message : "Unknown error"; + throw new Error(`Failed to save file: ${absolutePath} Error: ${msg}`); + } +}; + +const findDifferences = (newHashes: SystemContractHashes[], oldHashes: SystemContractHashes[]) => { + const differentElements = _.xorWith(newHashes, oldHashes, _.isEqual); + + const differentUniqueElements = _.uniqWith(differentElements, (a, b) => a.contractName === b.contractName); + + const differencesList = differentUniqueElements.map((diffElem) => { + const newHashesElem = newHashes.find((elem) => elem.contractName === diffElem.contractName); + + const oldHashesElem = oldHashes.find((elem) => elem.contractName === diffElem.contractName); + + const differingFields = _.xorWith( + Object.entries(newHashesElem || {}), + Object.entries(oldHashesElem || {}), + _.isEqual + ); + + const differingFieldsUniqueKeys = _.uniq(differingFields.map(([key]) => key)); + + return { + contract: diffElem.contractName, + differingFields: differingFieldsUniqueKeys, + old: oldHashesElem || {}, + new: newHashesElem || {}, + }; + }); + + return differencesList; +}; + +const SOLIDITY_SOURCE_CODE_PATHS = ["cache-zk/solpp-generated-contracts"]; +const YUL_SOURCE_CODE_PATHS = ["contracts", "contracts/precompiles", "bootloader/build"]; +const OUTPUT_FILE_PATH = "SystemContractsHashes.json"; + +const main = async () => { + const args = process.argv; + if (args.length > 3 || (args.length == 3 && !args.includes("--check-only"))) { + console.log( + "This command can be used with no arguments or with the --check-only flag. Use the --check-only flag to check the hashes without updating the SystemContractsHashes.json file." + ); + process.exit(1); + } + const checkOnly = args.includes("--check-only"); + + const solidityContractsDetails = _.flatten(SOLIDITY_SOURCE_CODE_PATHS.map(getSolidityContractsDetails)); + const yulContractsDetails = _.flatten(YUL_SOURCE_CODE_PATHS.map(getYulContractsDetails)); + const systemContractsDetails = [...solidityContractsDetails, ...yulContractsDetails]; + + const newSystemContractsHashes = getSystemContractsHashes(systemContractsDetails); + const oldSystemContractsHashes = readSystemContractsHashesFile(OUTPUT_FILE_PATH); + if (_.isEqual(newSystemContractsHashes, oldSystemContractsHashes)) { + console.log("Calculated hashes match the hashes in the SystemContractsHashes.json file."); + console.log("Exiting..."); + return; + } + const differences = findDifferences(newSystemContractsHashes, oldSystemContractsHashes); + console.log("Calculated hashes differ from the hashes in the SystemContractsHashes.json file. Differences:"); + console.log(differences); + if (checkOnly) { + console.log("You can use the `yarn calculate-hashes:fix` command to update the SystemContractsHashes.json file."); + console.log("Exiting..."); + process.exit(1); + } else { + console.log("Updating..."); + saveSystemContractsHashesFile(OUTPUT_FILE_PATH, newSystemContractsHashes); + console.log("Update finished"); + console.log("Exiting..."); + return; + } +}; + +main() + .then(() => process.exit(0)) + .catch((err) => { + console.error("Error:", err.message || err); + console.log("Please make sure to run `yarn build` before running this script."); + process.exit(1); + }); diff --git a/etc/system-contracts/scripts/compile-yul.ts b/etc/system-contracts/scripts/compile-yul.ts index 75c1316d..15983fcf 100644 --- a/etc/system-contracts/scripts/compile-yul.ts +++ b/etc/system-contracts/scripts/compile-yul.ts @@ -1,36 +1,36 @@ -import * as hre from 'hardhat'; -import * as fs from 'fs'; -import { exec as _exec, spawn as _spawn } from 'child_process'; +import * as hre from "hardhat"; -import { getZksolcUrl, saltFromUrl } from '@matterlabs/hardhat-zksync-solc'; +import { getZksolcUrl, saltFromUrl } from "@matterlabs/hardhat-zksync-solc"; +import { spawn as _spawn } from "child_process"; +import * as fs from "fs"; +import { getCompilersDir } from "hardhat/internal/util/global-dir"; +import path from "path"; -const COMPILER_VERSION = '1.3.14'; +const COMPILER_VERSION = "1.3.14"; const IS_COMPILER_PRE_RELEASE = false; -import path from "path"; -import { getCompilersDir } from "hardhat/internal/util/global-dir"; -export async function getZksolcPath(version: string, salt: string = ""): Promise { - return path.join(await getCompilersDir(), "zksolc", `zksolc-v${version}${salt ? "-" : ""}${salt}`); -} - async function compilerLocation(): Promise { + const compilersCache = await getCompilersDir(); + + let salt = ""; + if (IS_COMPILER_PRE_RELEASE) { - const url = getZksolcUrl('https://github.com/matter-labs/zksolc-prerelease', hre.config.zksolc.version); - const salt = saltFromUrl(url); - return await getZksolcPath(COMPILER_VERSION, salt); - } else { - return await getZksolcPath(COMPILER_VERSION, ''); + // @ts-ignore + const url = getZksolcUrl("https://github.com/matter-labs/zksolc-prerelease", hre.config.zksolc.version); + salt = saltFromUrl(url); } + + return path.join(compilersCache, "zksolc", `zksolc-v${COMPILER_VERSION}${salt ? "-" : ""}${salt}`); } // executes a command in a new shell // but pipes data to parent's stdout/stderr export function spawn(command: string) { - command = command.replace(/\n/g, ' '); - const child = _spawn(command, { stdio: 'inherit', shell: true }); + command = command.replace(/\n/g, " "); + const child = _spawn(command, { stdio: "inherit", shell: true }); return new Promise((resolve, reject) => { - child.on('error', reject); - child.on('close', (code) => { + child.on("error", reject); + child.on("close", (code) => { code == 0 ? resolve(code) : reject(`Child process exited with code ${code}`); }); }); @@ -41,7 +41,7 @@ export async function compileYul(path: string, files: string[], outputDirName: s console.log(`No test files provided in folder ${path}.`); return; } - let paths = preparePaths(path, files, outputDirName); + const paths = preparePaths(path, files, outputDirName); const zksolcLocation = await compilerLocation(); await spawn( @@ -50,23 +50,25 @@ export async function compileYul(path: string, files: string[], outputDirName: s } export async function compileYulFolder(path: string) { - let files: string[] = (await fs.promises.readdir(path)).filter((fn) => fn.endsWith('.yul')); + const files: string[] = (await fs.promises.readdir(path)).filter((fn) => fn.endsWith(".yul")); for (const file of files) { await compileYul(path, [file], `${file}`); } } - function preparePaths(path: string, files: string[], outputDirName: string | null): CompilerPaths { const filePaths = files - .map((val, _) => { + .map((val) => { return `sources/${val}`; }) - .join(' '); - const outputDir = outputDirName || files[0]; - let absolutePathSources = `${path}`; + .join(" "); + const currentWorkingDirectory = process.cwd(); + console.log(`Yarn project directory: ${currentWorkingDirectory}`); - let absolutePathArtifacts = `${path}/artifacts`; + const outputDir = outputDirName || files[0]; + // This script is located in `system-contracts/scripts`, so we get one directory back. + const absolutePathSources = `${__dirname}/../${path}`; + const absolutePathArtifacts = `${__dirname}/../${path}/artifacts`; return new CompilerPaths(filePaths, outputDir, absolutePathSources, absolutePathArtifacts); } @@ -84,17 +86,16 @@ class CompilerPaths { } } - async function main() { - await compileYulFolder('contracts'); - await compileYulFolder('contracts/precompiles'); - await compileYulFolder('bootloader/build'); - await compileYulFolder('bootloader/tests'); + await compileYulFolder("contracts"); + await compileYulFolder("contracts/precompiles"); + await compileYulFolder("bootloader/build"); + await compileYulFolder("bootloader/tests"); } main() .then(() => process.exit(0)) .catch((err) => { - console.error('Error:', err.message || err); + console.error("Error:", err.message || err); process.exit(1); }); diff --git a/etc/system-contracts/scripts/constants.ts b/etc/system-contracts/scripts/constants.ts index f4e86d59..991f5ef9 100644 --- a/etc/system-contracts/scripts/constants.ts +++ b/etc/system-contracts/scripts/constants.ts @@ -1,11 +1,12 @@ -import { BigNumberish, BytesLike, constants, ethers } from 'ethers'; +import type { BigNumberish, BytesLike } from "ethers"; +import { constants, ethers } from "ethers"; -export const BOOTLOADER_FORMAL_ADDRESS = '0x0000000000000000000000000000000000008001'; +export const BOOTLOADER_FORMAL_ADDRESS = "0x0000000000000000000000000000000000008001"; export const ETH_ADDRESS = constants.AddressZero; export enum Language { - Solidity = 'solidity', - Yul = 'yul' + Solidity = "solidity", + Yul = "yul", } export interface SystemContractDescription { @@ -29,110 +30,122 @@ interface ISystemContracts { export const SYSTEM_CONTRACTS: ISystemContracts = { zeroAddress: { // zero address has EmptyContract code - address: '0x0000000000000000000000000000000000000000', - codeName: 'EmptyContract', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000000000", + codeName: "EmptyContract", + lang: Language.Solidity, }, ecrecover: { - address: '0x0000000000000000000000000000000000000001', - codeName: 'Ecrecover', + address: "0x0000000000000000000000000000000000000001", + codeName: "Ecrecover", lang: Language.Yul, - path: 'precompiles' + path: "precompiles", }, sha256: { - address: '0x0000000000000000000000000000000000000002', - codeName: 'SHA256', + address: "0x0000000000000000000000000000000000000002", + codeName: "SHA256", + lang: Language.Yul, + path: "precompiles", + }, + ecAdd: { + address: "0x0000000000000000000000000000000000000006", + codeName: "EcAdd", lang: Language.Yul, - path: 'precompiles' + path: "precompiles", + }, + ecMul: { + address: "0x0000000000000000000000000000000000000007", + codeName: "EcMul", + lang: Language.Yul, + path: "precompiles", }, bootloader: { // Bootloader has EmptyContract code - address: '0x0000000000000000000000000000000000008001', - codeName: 'EmptyContract', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008001", + codeName: "EmptyContract", + lang: Language.Solidity, }, accountCodeStorage: { - address: '0x0000000000000000000000000000000000008002', - codeName: 'AccountCodeStorage', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008002", + codeName: "AccountCodeStorage", + lang: Language.Solidity, }, nonceHolder: { - address: '0x0000000000000000000000000000000000008003', - codeName: 'NonceHolder', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008003", + codeName: "NonceHolder", + lang: Language.Solidity, }, knownCodesStorage: { - address: '0x0000000000000000000000000000000000008004', - codeName: 'KnownCodesStorage', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008004", + codeName: "KnownCodesStorage", + lang: Language.Solidity, }, immutableSimulator: { - address: '0x0000000000000000000000000000000000008005', - codeName: 'ImmutableSimulator', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008005", + codeName: "ImmutableSimulator", + lang: Language.Solidity, }, contractDeployer: { - address: '0x0000000000000000000000000000000000008006', - codeName: 'ContractDeployer', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008006", + codeName: "ContractDeployer", + lang: Language.Solidity, }, l1Messenger: { - address: '0x0000000000000000000000000000000000008008', - codeName: 'L1Messenger', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008008", + codeName: "L1Messenger", + lang: Language.Solidity, }, msgValueSimulator: { - address: '0x0000000000000000000000000000000000008009', - codeName: 'MsgValueSimulator', - lang: Language.Solidity + address: "0x0000000000000000000000000000000000008009", + codeName: "MsgValueSimulator", + lang: Language.Solidity, }, l2EthToken: { - address: '0x000000000000000000000000000000000000800a', - codeName: 'L2EthToken', - lang: Language.Solidity + address: "0x000000000000000000000000000000000000800a", + codeName: "L2EthToken", + lang: Language.Solidity, }, systemContext: { - address: '0x000000000000000000000000000000000000800b', - codeName: 'SystemContext', - lang: Language.Solidity + address: "0x000000000000000000000000000000000000800b", + codeName: "SystemContext", + lang: Language.Solidity, }, bootloaderUtilities: { - address: '0x000000000000000000000000000000000000800c', - codeName: 'BootloaderUtilities', - lang: Language.Solidity + address: "0x000000000000000000000000000000000000800c", + codeName: "BootloaderUtilities", + lang: Language.Solidity, }, eventWriter: { - address: '0x000000000000000000000000000000000000800d', - codeName: 'EventWriter', + address: "0x000000000000000000000000000000000000800d", + codeName: "EventWriter", lang: Language.Yul, - path: '' + path: "", }, - bytecodeCompressor: { - address: '0x000000000000000000000000000000000000800e', - codeName: 'BytecodeCompressor', + compressor: { + address: "0x000000000000000000000000000000000000800e", + codeName: "Compressor", lang: Language.Solidity, }, complexUpgrader: { - address: '0x000000000000000000000000000000000000800f', - codeName: 'ComplexUpgrader', + address: "0x000000000000000000000000000000000000800f", + codeName: "ComplexUpgrader", lang: Language.Solidity, }, keccak256: { - address: '0x0000000000000000000000000000000000008010', - codeName: 'Keccak256', + address: "0x0000000000000000000000000000000000008010", + codeName: "Keccak256", lang: Language.Yul, - path: 'precompiles' - } + path: "precompiles", + }, } as const; export const EIP712_TX_ID = 113; -export const CHAIN_ID = 260; +export const CHAIN_ID = 270; // For now, these types are hardcoded, but maybe it will make sense export const EIP712_DOMAIN = { - name: 'zkSync', - version: '2', - chainId: CHAIN_ID + name: "zkSync", + version: "2", + chainId: CHAIN_ID, // zkSync contract doesn't verify EIP712 signatures. }; @@ -176,38 +189,38 @@ export type Address = string; export const EIP712_TX_TYPE = { Transaction: [ - { name: 'txType', type: 'uint8' }, - { name: 'to', type: 'uint256' }, - { name: 'value', type: 'uint256' }, - { name: 'data', type: 'bytes' }, - { name: 'gasLimit', type: 'uint256' }, - { name: 'gasPerPubdataByteLimit', type: 'uint256' }, - { name: 'gasPrice', type: 'uint256' }, - { name: 'nonce', type: 'uint256' } - ] + { name: "txType", type: "uint8" }, + { name: "to", type: "uint256" }, + { name: "value", type: "uint256" }, + { name: "data", type: "bytes" }, + { name: "gasLimit", type: "uint256" }, + { name: "gasPerPubdataByteLimit", type: "uint256" }, + { name: "gasPrice", type: "uint256" }, + { name: "nonce", type: "uint256" }, + ], }; -export type DynamicType = 'bytes' | 'bytes32[]'; -export type FixedType = 'address' | 'uint256' | 'uint128' | 'uint32'; +export type DynamicType = "bytes" | "bytes32[]"; +export type FixedType = "address" | "uint256" | "uint128" | "uint32"; export type FieldType = FixedType | DynamicType; function isDynamicType(x: FieldType): x is DynamicType { - return x == 'bytes' || x == 'bytes32[]'; + return x == "bytes" || x == "bytes32[]"; } function isFixedType(x: FieldType): x is FixedType { return !isDynamicType(x); } -export const TransactionFields: Record = { - txType: 'uint256', - from: 'address', - to: 'address', - gasLimit: 'uint32', - gasPerPubdataByteLimit: 'uint32', - maxFeePerGas: 'uint256', - maxPriorityFeePerGas: 'uint256', - paymaster: 'address', +export const TransactionFields: Record = { + txType: "uint256", + from: "address", + to: "address", + gasLimit: "uint32", + gasPerPubdataByteLimit: "uint32", + maxFeePerGas: "uint256", + maxPriorityFeePerGas: "uint256", + paymaster: "address", // In the future, we might want to add some // new fields to the struct. The `txData` struct // is to be passed to account and any changes to its structure @@ -216,25 +229,25 @@ export const TransactionFields: Record = { // It is also recommended that their length is fixed, since // it would allow easier proof integration (in case we will need // some special circuit for preprocessing transactions). - reserved: Array(6).fill('uint256'), - data: 'bytes', - signature: 'bytes', - factoryDeps: 'bytes32[]', - paymasterInput: 'bytes', + reserved: Array(6).fill("uint256"), + data: "bytes", + signature: "bytes", + factoryDeps: "bytes32[]", + paymasterInput: "bytes", // Reserved dynamic type for the future use-case. Using it should be avoided, // But it is still here, just in case we want to enable some additional functionality. - reservedDynamic: 'bytes' -} + reservedDynamic: "bytes", +}; function capitalize(s: string) { - if(!s.length) { + if (!s.length) { return s; } return `${s[0].toUpperCase()}${s.substring(1)}`; } function memPosFromOffset(offset: number) { - return offset === 0 ? 'innerTxDataOffset' : `add(innerTxDataOffset, ${offset})`; + return offset === 0 ? "innerTxDataOffset" : `add(innerTxDataOffset, ${offset})`; } function getGetterName(fieldName: string) { @@ -242,7 +255,7 @@ function getGetterName(fieldName: string) { } function getPtrGetterName(fieldName: string) { - return `get${capitalize(fieldName)}Ptr`; + return `get${capitalize(fieldName)}Ptr`; } function getGetter(fieldName: string, offset: number) { @@ -252,7 +265,7 @@ function getGetter(fieldName: string, offset: number) { function ${getterName}(innerTxDataOffset) -> ret { ret := mload(${memPos}) } - ` + `; } function getPtrGetter(fieldName: string, offset: number) { @@ -263,12 +276,12 @@ function getPtrGetter(fieldName: string, offset: number) { ret := mload(${memPos}) ret := add(innerTxDataOffset, ret) } - ` + `; } function getTypeValidationMethodName(type: FieldType) { - if(type == 'bytes32[]'){ - return 'validateBytes32Array' + if (type == "bytes32[]") { + return "validateBytes32Array"; } else { return `validate${capitalize(type)}`; } @@ -280,12 +293,12 @@ function getBytesLengthGetterName(fieldName: string): string { function getBytesLengthGetter(fieldName: string, type: DynamicType) { let lengthToBytes: string; - if(type == 'bytes') { - lengthToBytes = `lengthToWords(mload(ptr))`; - } else if(type == 'bytes32[]') { - lengthToBytes = `mul(mload(ptr),32)`; + if (type == "bytes") { + lengthToBytes = "lengthToWords(mload(ptr))"; + } else if (type == "bytes32[]") { + lengthToBytes = "mul(mload(ptr),32)"; } else { - throw new Error(`Type ${type} is not supported`) + throw new Error(`Type ${type} is not supported`); } const getterName = getBytesLengthGetterName(fieldName); @@ -294,14 +307,16 @@ function getBytesLengthGetter(fieldName: string, type: DynamicType) { let ptr := ${getPtrGetterName(fieldName)}(innerTxDataOffset) ret := ${lengthToBytes} } - ` + `; } function getDataLength(baseLength: number, dynamicFields: [string, DynamicType][]) { - const ptrAdders = dynamicFields.map(([fieldName,]) => { - return ` - ret := add(ret, ${getBytesLengthGetterName(fieldName)}(innerTxDataOffset))` - }).join(''); + const ptrAdders = dynamicFields + .map(([fieldName]) => { + return ` + ret := add(ret, ${getBytesLengthGetterName(fieldName)}(innerTxDataOffset))`; + }) + .join(""); return ` function getDataLength(innerTxDataOffset) -> ret { @@ -312,16 +327,16 @@ function getDataLength(baseLength: number, dynamicFields: [string, DynamicType][ ${ptrAdders} } - ` + `; } function validateFixedSizeField(fieldName: string, type: FixedType): string { - if(type == 'uint256') { + if (type == "uint256") { // There is no validation for uint256 - return ``; + return ""; } const assertionErrorStr = getEncodingError(fieldName); - const fieldValue = `${fieldName}Value` + const fieldValue = `${fieldName}Value`; return ` let ${fieldValue} := ${getGetterName(fieldName)}(innerTxDataOffset) if iszero(${getTypeValidationMethodName(type)}(${fieldValue})) { @@ -335,31 +350,33 @@ function getEncodingError(fieldName: string) { // because the maximum length is 32. const assertionError = `Encoding ${fieldName}`; - if(assertionError.length > 32) { - throw new Error(`Assertion str too long: ${assertionError}`) + if (assertionError.length > 32) { + throw new Error(`Assertion str too long: ${assertionError}`); } return assertionError; } function getValidateTxStructure( - fixedFieldsChecks: string, + fixedFieldsChecks: string, fixedLenPart: number, dynamicFields: [string, DynamicType][] ): string { - const dynamicChecks = dynamicFields.map(([fieldName, type]) => { - const lengthPos = `${fieldName}LengthPos`; - const assertionError = getEncodingError(fieldName); - const validationMethod = getTypeValidationMethodName(type); + const dynamicChecks = dynamicFields + .map(([fieldName, type]) => { + const lengthPos = `${fieldName}LengthPos`; + const assertionError = getEncodingError(fieldName); + const validationMethod = getTypeValidationMethodName(type); - return ` + return ` let ${lengthPos} := ${getPtrGetterName(fieldName)}(innerTxDataOffset) if iszero(eq(${lengthPos}, expectedDynamicLenPtr)) { assertionError("${assertionError}") } expectedDynamicLenPtr := ${validationMethod}(${lengthPos}) - ` - }).join('\n'); + `; + }) + .join("\n"); return ` /// This method checks that the transaction's structure is correct @@ -378,13 +395,13 @@ export function getTransactionUtils(): string { ///\n`; let innerOffsetBytes = 0; - let checksStr = ``; + let checksStr = ""; const dynamicFields: [string, DynamicType][] = []; - for(const [key, value] of Object.entries(TransactionFields)) { + for (const [key, value] of Object.entries(TransactionFields)) { if (Array.isArray(value)) { - // We assume that the - for(let i = 0; i < value.length; i++) { + // We assume that the + for (let i = 0; i < value.length; i++) { const keyName = `${key}${i}`; result += getGetter(keyName, innerOffsetBytes); checksStr += validateFixedSizeField(keyName, value[i]); @@ -402,11 +419,7 @@ export function getTransactionUtils(): string { } } - result += getValidateTxStructure( - checksStr, - innerOffsetBytes, - dynamicFields - ); + result += getValidateTxStructure(checksStr, innerOffsetBytes, dynamicFields); result += getDataLength(innerOffsetBytes, dynamicFields); @@ -414,5 +427,5 @@ export function getTransactionUtils(): string { } export function getRevertSelector(): string { - return ethers.utils.keccak256(ethers.utils.toUtf8Bytes('Error(string)')).substring(0, 10); + return ethers.utils.keccak256(ethers.utils.toUtf8Bytes("Error(string)")).substring(0, 10); } diff --git a/etc/system-contracts/scripts/deploy-preimages.ts b/etc/system-contracts/scripts/deploy-preimages.ts index 1888caa4..20cc8611 100644 --- a/etc/system-contracts/scripts/deploy-preimages.ts +++ b/etc/system-contracts/scripts/deploy-preimages.ts @@ -1,338 +1,305 @@ -import * as hre from 'hardhat'; +import * as hre from "hardhat"; + +import { Deployer } from "@matterlabs/hardhat-zksync-deploy"; +import { Command } from "commander"; +import type { BigNumber } from "ethers"; +import { ethers } from "ethers"; +import { formatUnits, parseUnits } from "ethers/lib/utils"; +import * as fs from "fs"; +import * as path from "path"; +import { Provider, Wallet } from "zksync-web3"; +import { hashBytecode } from "zksync-web3/build/src/utils"; +import { Language, SYSTEM_CONTRACTS } from "./constants"; +import type { Dependency, DeployedDependency } from "./utils"; +import { filterPublishedFactoryDeps, publishFactoryDeps, readYulBytecode } from "./utils"; + +const testConfigPath = path.join(process.env.ZKSYNC_HOME as string, "etc/test_config/constant"); +const ethTestConfig = JSON.parse(fs.readFileSync(`${testConfigPath}/eth.json`, { encoding: "utf-8" })); -import { Command } from 'commander'; -import { Wallet } from 'zksync-web3'; -import { Deployer } from '@matterlabs/hardhat-zksync-deploy'; - -import * as path from 'path'; -import * as fs from 'fs'; - -import { Language, SYSTEM_CONTRACTS, YulContractDescrption } from './constants'; -import { BytesLike, formatUnits, parseUnits } from 'ethers/lib/utils'; -import { BigNumber, BigNumberish, ethers } from 'ethers'; -import { hashBytecode } from 'zksync-web3/build/src/utils'; - -const testConfigPath = path.join(process.env.ZKSYNC_HOME as string, `etc/test_config/constant`); -const ethTestConfig = JSON.parse(fs.readFileSync(`${testConfigPath}/eth.json`, { encoding: 'utf-8' })); - -// Script that publishes preimages for all the system contracts on zkSync -// and outputs the JSON that can be used for performing the necessary upgrade -const DEFAULT_L2_TX_GAS_LIMIT = 2097152; +// Maximum length of the combined length of dependencies +const MAX_COMBINED_LENGTH = 90000; -async function getMarkers(dependencies: BytesLike[], deployer: Deployer): Promise<[string, BigNumber][]> { - const contract = new ethers.Contract( - SYSTEM_CONTRACTS.knownCodesStorage.address, - (await deployer.loadArtifact('KnownCodesStorage')).abi, - deployer.zkWallet +const DEFAULT_ACCOUNT_CONTRACT_NAME = "DefaultAccount"; +const BOOTLOADER_CONTRACT_NAME = "Bootloader"; + +class ZkSyncDeployer { + deployer: Deployer; + gasPrice: BigNumber; + nonce: number; + dependenciesToUpgrade: DeployedDependency[]; + defaultAccountToUpgrade?: DeployedDependency; + bootloaderToUpgrade?: DeployedDependency; + constructor(deployer: Deployer, gasPrice: BigNumber, nonce: number) { + this.deployer = deployer; + this.gasPrice = gasPrice; + this.nonce = nonce; + this.dependenciesToUpgrade = []; + } + + async publishFactoryDeps(dependencies: Dependency[]) { + await publishFactoryDeps(dependencies, this.deployer, this.nonce, this.gasPrice); + this.nonce += 1; + } + + // Returns the current default account bytecode on zkSync + async currentDefaultAccountBytecode(): Promise { + const zkSync = await this.deployer.zkWallet.getMainContract(); + return await zkSync.getL2DefaultAccountBytecodeHash(); + } + + // If needed, appends the default account bytecode to the upgrade + async checkShouldUpgradeDefaultAA(defaultAccountBytecode: string) { + const bytecodeHash = ethers.utils.hexlify(hashBytecode(defaultAccountBytecode)); + const currentDefaultAccountBytecode = ethers.utils.hexlify(await this.currentDefaultAccountBytecode()); + + // If the bytecode is not the same as the one deployed on zkSync, we need to add it to the deployment + if (bytecodeHash.toLowerCase() !== currentDefaultAccountBytecode) { + this.defaultAccountToUpgrade = { + name: DEFAULT_ACCOUNT_CONTRACT_NAME, + bytecodeHashes: [bytecodeHash], + }; + } + } + + // Publish default account bytecode + async publishDefaultAA(defaultAccountBytecode: string) { + const [defaultAccountBytecodes] = await filterPublishedFactoryDeps( + DEFAULT_ACCOUNT_CONTRACT_NAME, + [defaultAccountBytecode], + this.deployer ); - const promises = dependencies.map(async (dep) => { - const hash = ethers.utils.hexlify(hashBytecode(dep)); - const marker = BigNumber.from(await contract.getMarker(hash)); - - return [hash, marker] as [string, BigNumber]; - }); - - return await Promise.all(promises); -} - -// Checks whether the marker has been set correctly in the KnownCodesStorage -// system contract -async function checkMarker(dependencies: string[], deployer: Deployer) { - const markers = await getMarkers(dependencies, deployer); - - for(const [bytecodeHash, marker] of markers) { - if(marker.eq(0)) { - throw new Error(`Failed to mark ${bytecodeHash}`); - } + if (defaultAccountBytecodes.length == 0) { + console.log("Default account bytecode is already published, skipping"); + return; } -} - -function totalBytesLength(dependencies: string[]): number { - return dependencies.reduce((prev, curr) => prev + ethers.utils.arrayify(curr).length, 0); -} -async function publishFactoryDeps( - dependenciesNames: string[], - dependencies: string[], - deployer: Deployer, - nonce: number, - gasPrice: BigNumber -) { - if(dependencies.length == 0) { - return; + await this.publishFactoryDeps([ + { + name: DEFAULT_ACCOUNT_CONTRACT_NAME, + bytecodes: defaultAccountBytecodes, + }, + ]); + this.nonce += 1; + } + + // Publishes the bytecode of default AA and appends it to the deployed bytecodes if needed. + async processDefaultAA() { + const defaultAccountBytecode = (await this.deployer.loadArtifact(DEFAULT_ACCOUNT_CONTRACT_NAME)).bytecode; + + await this.publishDefaultAA(defaultAccountBytecode); + await this.checkShouldUpgradeDefaultAA(defaultAccountBytecode); + } + + async currentBootloaderBytecode(): Promise { + const zkSync = await this.deployer.zkWallet.getMainContract(); + return await zkSync.getL2BootloaderBytecodeHash(); + } + + async checkShouldUpgradeBootloader(bootloaderCode: string) { + const bytecodeHash = ethers.utils.hexlify(hashBytecode(bootloaderCode)); + const currentBootloaderBytecode = ethers.utils.hexlify(await this.currentBootloaderBytecode()); + + // If the bytecode is not the same as the one deployed on zkSync, we need to add it to the deployment + if (bytecodeHash.toLowerCase() !== currentBootloaderBytecode) { + this.bootloaderToUpgrade = { + name: BOOTLOADER_CONTRACT_NAME, + bytecodeHashes: [bytecodeHash], + }; } - - const combinedLength = totalBytesLength(dependencies); - - console.log(`\nPublishing dependencies for contracts ${dependenciesNames.join(', ')}`); - console.log(`Combined length ${combinedLength}`); - - const txHandle = await deployer.zkWallet.requestExecute({ - contractAddress: ethers.constants.AddressZero, - calldata: '0x', - l2GasLimit: DEFAULT_L2_TX_GAS_LIMIT, - factoryDeps: dependencies, - overrides: { - nonce, - gasPrice, - gasLimit: 3000000 - } - }) - console.log(`Transaction hash: ${txHandle.hash}`); - - // Waiting for the transaction to be processed by the server - await txHandle.wait(); - - console.log('Transaction complete! Checking markers on L2...'); - - // Double checking that indeed the dependencies have been marked as known - await checkMarker(dependencies, deployer); -} - -export interface ForceDeployment { - // The bytecode hash to put on an address - bytecodeHash: BytesLike; - // The address on which to deploy the bytecodehash to - newAddress: string; - // The value with which to initialize a contract - value: BigNumberish; - // The constructor calldata - input: BytesLike; - // Whether to call the constructor - callConstructor: boolean; -} - -async function outputDeploymentParams(deployer: Deployer) { - const upgradeParamsPromises: Promise[] = Object.values(SYSTEM_CONTRACTS).map(async (systemContractInfo) => { - let bytecode: string; - - if (systemContractInfo.lang === Language.Yul) { - bytecode = readYulBytecode(systemContractInfo); - } else { - bytecode = (await deployer.loadArtifact(systemContractInfo.codeName)).bytecode; - } - const bytecodeHash = hashBytecode(bytecode); - - return { - bytecodeHash: ethers.utils.hexlify(bytecodeHash), - newAddress: systemContractInfo.address, - value: "0", - input: '0x', - callConstructor: false - } - }); - const upgradeParams = await Promise.all(upgradeParamsPromises); - - console.log(JSON.stringify(upgradeParams, null, 2)); -} + } -// Returns an array of bytecodes that should be published along with -async function displayFactoryDeps( - contractName: string, - factoryDeps: string[], - deployer: Deployer -): Promise<[string[], number]> { - console.log(`\nFactory dependencies for contract ${contractName}:`); - let currentLength = 0; + async publishBootloader(bootloaderCode: string) { + console.log("\nPublishing bootloader bytecode:"); - let bytecodesToDeploy: string[] = []; + const [deps] = await filterPublishedFactoryDeps(BOOTLOADER_CONTRACT_NAME, [bootloaderCode], this.deployer); - const hashesAndMarkers = await getMarkers(factoryDeps, deployer); - - for(let i = 0; i < factoryDeps.length; i++) { - const depLength = ethers.utils.arrayify(factoryDeps[i]).length; - const [hash, marker] = hashesAndMarkers[i]; - console.log(`${hash} (length: ${depLength} bytes) (deployed: ${marker})`); - - if(marker.eq(0)) { - currentLength += depLength; - bytecodesToDeploy.push(factoryDeps[i]); - } + if (deps.length == 0) { + console.log("Default bootloader bytecode is already published, skipping"); + return; } - console.log(`Combined length to deploy: ${currentLength}`); - - return [bytecodesToDeploy, currentLength]; -} - -async function publishBootloader( - deployer: Deployer, - nonce: number, - gasPrice: BigNumber -) { - console.log('\nPublishing bootloader bytecode:'); - const bootloaderCode = ethers.utils.hexlify(fs.readFileSync('./bootloader/build/artifacts/proved_block.yul/proved_block.yul.zbin')); - - const [deps, ] = await displayFactoryDeps('Bootloader', [bootloaderCode], deployer); - - await publishFactoryDeps( - ['Bootloader'], - deps, - deployer, - nonce, - gasPrice + await this.publishFactoryDeps([ + { + name: BOOTLOADER_CONTRACT_NAME, + bytecodes: deps, + }, + ]); + } + + async processBootloader() { + const bootloaderCode = ethers.utils.hexlify( + fs.readFileSync("./bootloader/build/artifacts/proved_batch.yul/proved_batch.yul.zbin") ); -} - -// Maximum length of the combined length of dependencies -const MAX_COMBINED_LENGTH = 90000; + await this.publishBootloader(bootloaderCode); + await this.checkShouldUpgradeBootloader(bootloaderCode); + } + async shouldUpgradeSystemContract(contractAddress: string, expectedBytecodeHash: string): Promise { + // We could have also used the `getCode` method of the JSON-RPC, but in the context + // of system upgrades looking into account code storage is more robust + const currentBytecodeHash = await this.deployer.zkWallet.provider.getStorageAt( + SYSTEM_CONTRACTS.accountCodeStorage.address, + contractAddress + ); -/// Publishes the contract with the given name, along with its dependencies. -/// It modifies currentToPublishNames and currentToPublish, in place. -/// Returns the new nonce. -async function publishContract( - contractName: string, - factoryDeps: string[], - currentToPublishNames: string[], - currentToPublish: string[], - currentNonce: number, - gasPrice: BigNumber, - deployer: Deployer -): Promise { - let [bytecodesToDeploy, currentLength] = await displayFactoryDeps(contractName, factoryDeps, deployer); - - if(currentLength > MAX_COMBINED_LENGTH) { + return expectedBytecodeHash.toLowerCase() !== currentBytecodeHash.toLowerCase(); + } + + // Returns the contracts to be published. + async prepareContractsForPublishing(): Promise { + const dependenciesToPublish: Dependency[] = []; + for (const contract of Object.values(SYSTEM_CONTRACTS)) { + const contractName = contract.codeName; + let factoryDeps: string[] = []; + if (contract.lang == Language.Solidity) { + const artifact = await this.deployer.loadArtifact(contractName); + factoryDeps = [...(await this.deployer.extractFactoryDeps(artifact)), artifact.bytecode]; + } else { + // Yul files have only one dependency + factoryDeps = [readYulBytecode(contract)]; + } + + const contractBytecodeHash = ethers.utils.hexlify(hashBytecode(factoryDeps[factoryDeps.length - 1])); + if (await this.shouldUpgradeSystemContract(contract.address, contractBytecodeHash)) { + this.dependenciesToUpgrade.push({ + name: contractName, + bytecodeHashes: [contractBytecodeHash], + address: contract.address, + }); + } + + const [bytecodesToPublish, currentLength] = await filterPublishedFactoryDeps( + contractName, + factoryDeps, + this.deployer + ); + if (bytecodesToPublish.length == 0) { + console.log(`All bytecodes for ${contractName} are already published, skipping`); + continue; + } + if (currentLength > MAX_COMBINED_LENGTH) { throw new Error(`Can not publish dependencies of contract ${contractName}`); - } + } - const currentCombinedLength = currentToPublish.reduce((prev, dep) => prev + ethers.utils.arrayify(dep).length, 0); - - if(currentLength + currentCombinedLength > MAX_COMBINED_LENGTH) { - await publishFactoryDeps( - currentToPublishNames, - currentToPublish, - deployer, - currentNonce, - gasPrice - ); - - currentToPublishNames.splice(0); - currentToPublish.splice(0); - - currentNonce += 1; + dependenciesToPublish.push({ + name: contractName, + bytecodes: bytecodesToPublish, + address: contract.address, + }); } - currentToPublishNames.push(contractName); - currentToPublish.push( - ...bytecodesToDeploy - ); - - return currentNonce; + return dependenciesToPublish; + } + + async publishDependencies(dependenciesToPublish: Dependency[]) { + let currentLength = 0; + let currentDependencies: Dependency[] = []; + // We iterate over dependencies and try to batch the publishing of those in order to save up on gas as well as time. + for (const dependency of dependenciesToPublish) { + const dependencyLength = dependency.bytecodes.reduce((prev, dep) => prev + ethers.utils.arrayify(dep).length, 0); + if (currentLength + dependencyLength > MAX_COMBINED_LENGTH) { + await this.publishFactoryDeps(currentDependencies); + currentLength = dependencyLength; + currentDependencies = [dependency]; + } else { + currentLength += dependencyLength; + currentDependencies.push(dependency); + } + } + if (currentDependencies.length > 0) { + await this.publishFactoryDeps(currentDependencies); + } + } + + returnResult() { + return { + systemContracts: this.dependenciesToUpgrade, + defaultAA: this.defaultAccountToUpgrade, + bootloader: this.bootloaderToUpgrade, + }; + } } -function readYulBytecode(description: YulContractDescrption) { - const contractName = description.codeName; - const path = `contracts/${description.path}/artifacts/${contractName}.yul/${contractName}.yul.zbin`; - const dependency = ethers.utils.hexlify(fs.readFileSync(path)); +export function l1RpcUrl() { + return process.env.ETH_CLIENT_WEB3_URL as string; +} - return dependency; +export function l2RpcUrl() { + return process.env.API_WEB3_JSON_RPC_HTTP_URL as string; } async function main() { - const program = new Command(); - - program.version('0.1.0').name('publish preimages').description('publish preimages for the L2 contracts'); - - program - .option('--private-key ') - .option('--gas-price ') - .option('--nonce ') - .action(async (cmd) => { - const noproviderWallet = cmd.privateKey - ? new Wallet(cmd.privateKey) - : Wallet.fromMnemonic( - process.env.MNEMONIC ? process.env.MNEMONIC : ethTestConfig.mnemonic, - "m/44'/60'/0'/0/1" - ); - - - const deployer = new Deployer(hre, noproviderWallet); - const ethWallet = deployer.ethWallet; - const l1Provider = deployer.ethWallet.provider; - - console.log(`Using deployer wallet: ${ethWallet.address}`); - - const gasPrice = cmd.gasPrice ? parseUnits(cmd.gasPrice, 'gwei') : await l1Provider.getGasPrice(); - console.log(`Using gas price: ${formatUnits(gasPrice, 'gwei')} gwei`); - - let nonce = cmd.nonce ? parseInt(cmd.nonce) : await ethWallet.getTransactionCount(); - console.log(`Using nonce: ${nonce}`); - - let currentToPublishNames: string[] = []; - let currentToPublish: string[] = []; - for(const contract of Object.values(SYSTEM_CONTRACTS)) { - let contractName = contract.codeName; - - let factoryDeps: string[] = []; - if (contract.lang == Language.Solidity) { - const artifact = await deployer.loadArtifact(contractName); - factoryDeps = [ - ...await deployer.extractFactoryDeps(artifact), - artifact.bytecode - ]; - } else { - // Yul files have only one dependency - factoryDeps = [ - readYulBytecode(contract) - ]; - } - - nonce = await publishContract( - contractName, - factoryDeps, - currentToPublishNames, - currentToPublish, - nonce, - gasPrice, - deployer - ); - } - - // Publish the remaining dependencies - if(currentToPublish.length > 0) { - await publishFactoryDeps( - currentToPublishNames, - currentToPublish, - deployer, - nonce, - gasPrice - ); - nonce += 1; - } - - // Publish the DefaultAccount as it is not included in the SYSTEM_CONTRACTS, since - // it has no address. - const [defaultAccountBytecodes, ] = await displayFactoryDeps('DefaultAccount', [(await deployer.loadArtifact('DefaultAccount')).bytecode], deployer); - await publishFactoryDeps( - ['DefaultAccount'], - defaultAccountBytecodes, - deployer, - nonce, - gasPrice - ); - nonce += 1; - - // Publish the bootloader - await publishBootloader( - deployer, - nonce, - gasPrice - ); - - console.log('\nPublishing factory dependencies complete!'); - - await outputDeploymentParams(deployer); - }); + const program = new Command(); + + program.version("0.1.0").name("publish preimages").description("publish preimages for the L2 contracts"); + + program + .option("--private-key ") + .option("--gas-price ") + .option("--nonce ") + .option("--l1Rpc ") + .option("--l2Rpc ") + .option("--bootloader") + .option("--default-aa") + .option("--system-contracts") + .option("--file ") + .action(async (cmd) => { + const l1Rpc = cmd.l1Rpc ? cmd.l1Rpc : l1RpcUrl(); + const l2Rpc = cmd.l2Rpc ? cmd.l2Rpc : l2RpcUrl(); + const providerL1 = new ethers.providers.JsonRpcProvider(l1Rpc); + const providerL2 = new Provider(l2Rpc); + const wallet = cmd.privateKey + ? new Wallet(cmd.privateKey) + : Wallet.fromMnemonic(process.env.MNEMONIC ? process.env.MNEMONIC : ethTestConfig.mnemonic, "m/44'/60'/0'/0/1"); + wallet.connect(providerL2); + wallet.connectToL1(providerL1); + + // TODO(EVM-392): refactor to avoid `any` here. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const deployer = new Deployer(hre, wallet as any); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + deployer.zkWallet = deployer.zkWallet.connect(providerL2 as any).connectToL1(providerL1); + deployer.ethWallet = deployer.ethWallet.connect(providerL1); + const ethWallet = deployer.ethWallet; + + console.log(`Using deployer wallet: ${ethWallet.address}`); + + const gasPrice = cmd.gasPrice ? parseUnits(cmd.gasPrice, "gwei") : await providerL1.getGasPrice(); + console.log(`Using gas price: ${formatUnits(gasPrice, "gwei")} gwei`); + + const nonce = cmd.nonce ? parseInt(cmd.nonce) : await ethWallet.getTransactionCount(); + console.log(`Using nonce: ${nonce}`); + + const zkSyncDeployer = new ZkSyncDeployer(deployer, gasPrice, nonce); + if (cmd.bootloader) { + await zkSyncDeployer.processBootloader(); + } + + if (cmd.defaultAa) { + await zkSyncDeployer.processDefaultAA(); + } + + if (cmd.systemContracts) { + const dependenciesToPublish = await zkSyncDeployer.prepareContractsForPublishing(); + await zkSyncDeployer.publishDependencies(dependenciesToPublish); + } + + const result = zkSyncDeployer.returnResult(); + console.log(JSON.stringify(result, null, 2)); + if (cmd.file) { + fs.writeFileSync(cmd.file, JSON.stringify(result, null, 2)); + } + console.log("\nPublishing factory dependencies complete!"); + }); - await program.parseAsync(process.argv); + await program.parseAsync(process.argv); } main() - .then(() => process.exit(0)) - .catch((err) => { - console.error('Error:', err); - process.exit(1); - }); + .then(() => process.exit(0)) + .catch((err) => { + console.error("Error:", err); + process.exit(1); + }); diff --git a/etc/system-contracts/scripts/process.ts b/etc/system-contracts/scripts/process.ts index 2358e6d1..3c230f61 100644 --- a/etc/system-contracts/scripts/process.ts +++ b/etc/system-contracts/scripts/process.ts @@ -1,14 +1,23 @@ -const preprocess = require('preprocess'); +import * as hre from "hardhat"; -import { existsSync, mkdirSync, write, writeFileSync } from 'fs'; -import { SYSTEM_CONTRACTS, getRevertSelector, getTransactionUtils } from './constants'; -import * as hre from 'hardhat'; -import { ethers } from 'ethers'; -import { renderFile } from 'template-file'; -import { utils } from 'zksync-web3'; -import { ForceDeployment } from './utils'; -const OUTPUT_DIR = 'bootloader/build'; +import { ethers } from "ethers"; +import { existsSync, mkdirSync, writeFileSync } from "fs"; +import { join } from "path"; +import { renderFile } from "template-file"; +import { utils } from "zksync-web3"; +import { SYSTEM_CONTRACTS, getRevertSelector, getTransactionUtils } from "./constants"; +import type { ForceDeployment } from "./utils"; +/* eslint-disable @typescript-eslint/no-var-requires */ +const preprocess = require("preprocess"); +const SYSTEM_PARAMS = require("../SystemConfig.json"); +/* eslint-enable@typescript-eslint/no-var-requires */ + +const OUTPUT_DIR = "bootloader/build"; + +function path(...args: string[]): string { + return join(__dirname, ...args); +} function getSelector(contractName: string, method: string): string { const artifact = hre.artifacts.readArtifactSync(contractName); @@ -20,7 +29,7 @@ function getSelector(contractName: string, method: string): string { // Methods from ethers do zero pad from left, but we need to pad from the right function padZeroRight(hexData: string, length: number): string { while (hexData.length < length) { - hexData += '0'; + hexData += "0"; } return hexData; @@ -28,15 +37,13 @@ function padZeroRight(hexData: string, length: number): string { const PADDED_SELECTOR_LENGTH = 32 * 2 + 2; function getPaddedSelector(contractName: string, method: string): string { - let result = getSelector(contractName, method); + const result = getSelector(contractName, method); - return padZeroRight(result, PADDED_SELECTOR_LENGTH) + return padZeroRight(result, PADDED_SELECTOR_LENGTH); } -const SYSTEM_PARAMS = require('../SystemConfig.json'); - function getSystemContextExpectedHash() { - const artifact = hre.artifacts.readArtifactSync('SystemContext'); + const artifact = hre.artifacts.readArtifactSync("SystemContext"); return ethers.utils.hexlify(utils.hashBytecode(artifact.bytecode)); } @@ -45,33 +52,33 @@ function upgradeSystemContextCalldata() { // it into writing of the calldata into the bootloader memory. const newHash = getSystemContextExpectedHash(); - const artifact = new ethers.utils.Interface(hre.artifacts.readArtifactSync('ContractDeployer').abi); + const artifact = new ethers.utils.Interface(hre.artifacts.readArtifactSync("ContractDeployer").abi); const forceDeplyment: ForceDeployment = { bytecodeHash: newHash, - newAddress: SYSTEM_CONTRACTS.systemContext.address, + newAddress: SYSTEM_CONTRACTS.systemContext.address, callConstructor: false, value: 0, - input: '0x' + input: "0x", }; - let calldata = artifact.encodeFunctionData('forceDeployOnAddresses', [[forceDeplyment]]); + let calldata = artifact.encodeFunctionData("forceDeployOnAddresses", [[forceDeplyment]]); const originalLength = (calldata.length - 2) / 2; // Padding calldata from the right. We really need to do it, since Yul would "implicitly" pad it from the left and it // it is not what we want. - while((calldata.length - 2) % 64 != 0) { - calldata += '0'; + while ((calldata.length - 2) % 64 != 0) { + calldata += "0"; } // We will apply tabulation to make the compiled bootloader code more readable - const TABULATION = '\t\t\t\t\t'; + const TABULATION = "\t\t\t\t\t"; // In the first slot we need to store the calldata's length let data = `mstore(0x00, ${originalLength})\n`; - + const slices = (calldata.length - 2) / 64; - for(let slice = 0; slice < slices; slice++) { + for (let slice = 0; slice < slices; slice++) { const offset = slice * 32; const sliceHex = calldata.slice(2 + offset * 2, 2 + offset * 2 + 64); @@ -83,95 +90,185 @@ function upgradeSystemContextCalldata() { // Maybe in the future some of these params will be passed // in a JSON file. For now, a simple object is ok here. -let params = { - MARK_BATCH_AS_REPUBLISHED_SELECTOR: getSelector('KnownCodesStorage', 'markFactoryDeps'), - VALIDATE_TX_SELECTOR: getSelector('IAccount', 'validateTransaction'), - EXECUTE_TX_SELECTOR: getSelector('DefaultAccount', 'executeTransaction'), - RIGHT_PADDED_GET_ACCOUNT_VERSION_SELECTOR: getPaddedSelector('ContractDeployer','extendedAccountVersion'), - RIGHT_PADDED_GET_RAW_CODE_HASH_SELECTOR: getPaddedSelector('AccountCodeStorage', 'getRawCodeHash'), - PAY_FOR_TX_SELECTOR: getSelector('DefaultAccount', 'payForTransaction'), - PRE_PAYMASTER_SELECTOR: getSelector('DefaultAccount', 'prepareForPaymaster'), - VALIDATE_AND_PAY_PAYMASTER: getSelector('IPaymaster', 'validateAndPayForPaymasterTransaction'), +const params = { + MARK_BATCH_AS_REPUBLISHED_SELECTOR: getSelector("KnownCodesStorage", "markFactoryDeps"), + VALIDATE_TX_SELECTOR: getSelector("IAccount", "validateTransaction"), + EXECUTE_TX_SELECTOR: getSelector("DefaultAccount", "executeTransaction"), + RIGHT_PADDED_GET_ACCOUNT_VERSION_SELECTOR: getPaddedSelector("ContractDeployer", "extendedAccountVersion"), + RIGHT_PADDED_GET_RAW_CODE_HASH_SELECTOR: getPaddedSelector("AccountCodeStorage", "getRawCodeHash"), + PAY_FOR_TX_SELECTOR: getSelector("DefaultAccount", "payForTransaction"), + PRE_PAYMASTER_SELECTOR: getSelector("DefaultAccount", "prepareForPaymaster"), + VALIDATE_AND_PAY_PAYMASTER: getSelector("IPaymaster", "validateAndPayForPaymasterTransaction"), // It doesn't used directly now but is important to keep the way to regenerate it when needed TX_UTILITIES: getTransactionUtils(), - RIGHT_PADDED_POST_TRANSACTION_SELECTOR: getPaddedSelector('IPaymaster', 'postTransaction'), - RIGHT_PADDED_SET_TX_ORIGIN: getPaddedSelector('SystemContext', 'setTxOrigin'), - RIGHT_PADDED_SET_GAS_PRICE: getPaddedSelector('SystemContext', 'setGasPrice'), - RIGHT_PADDED_SET_NEW_BATCH_SELECTOR: getPaddedSelector('SystemContext', 'setNewBatch'), - RIGHT_PADDED_OVERRIDE_BATCH_SELECTOR: getPaddedSelector('SystemContext', 'unsafeOverrideBatch'), + RIGHT_PADDED_POST_TRANSACTION_SELECTOR: getPaddedSelector("IPaymaster", "postTransaction"), + RIGHT_PADDED_SET_TX_ORIGIN: getPaddedSelector("SystemContext", "setTxOrigin"), + RIGHT_PADDED_SET_GAS_PRICE: getPaddedSelector("SystemContext", "setGasPrice"), + RIGHT_PADDED_INCREMENT_TX_NUMBER_IN_BLOCK_SELECTOR: getPaddedSelector("SystemContext", "incrementTxNumberInBatch"), + RIGHT_PADDED_RESET_TX_NUMBER_IN_BLOCK_SELECTOR: getPaddedSelector("SystemContext", "resetTxNumberInBatch"), + RIGHT_PADDED_SEND_L2_TO_L1_LOG_SELECTOR: getPaddedSelector("L1Messenger", "sendL2ToL1Log"), + PUBLISH_PUBDATA_SELECTOR: getSelector("L1Messenger", "publishPubdataAndClearState"), + RIGHT_PADDED_SET_NEW_BATCH_SELECTOR: getPaddedSelector("SystemContext", "setNewBatch"), + RIGHT_PADDED_OVERRIDE_BATCH_SELECTOR: getPaddedSelector("SystemContext", "unsafeOverrideBatch"), // Error REVERT_ERROR_SELECTOR: padZeroRight(getRevertSelector(), PADDED_SELECTOR_LENGTH), - RIGHT_PADDED_VALIDATE_NONCE_USAGE_SELECTOR: getPaddedSelector('INonceHolder', 'validateNonceUsage'), - RIGHT_PADDED_MINT_ETHER_SELECTOR: getPaddedSelector('L2EthToken', 'mint'), - GET_TX_HASHES_SELECTOR: getSelector('BootloaderUtilities', 'getTransactionHashes'), - CREATE_SELECTOR: getSelector('ContractDeployer','create'), - CREATE2_SELECTOR: getSelector('ContractDeployer','create2'), - CREATE_ACCOUNT_SELECTOR: getSelector('ContractDeployer','createAccount'), - CREATE2_ACCOUNT_SELECTOR: getSelector('ContractDeployer','create2Account'), - PADDED_TRANSFER_FROM_TO_SELECTOR: getPaddedSelector('L2EthToken', 'transferFromTo'), - SUCCESSFUL_ACCOUNT_VALIDATION_MAGIC_VALUE: getPaddedSelector('IAccount', 'validateTransaction'), - SUCCESSFUL_PAYMASTER_VALIDATION_MAGIC_VALUE: getPaddedSelector('IPaymaster', 'validateAndPayForPaymasterTransaction'), - PUBLISH_COMPRESSED_BYTECODE_SELECTOR: getSelector('BytecodeCompressor', 'publishCompressedBytecode'), - GET_MARKER_PADDED_SELECTOR: getPaddedSelector('KnownCodesStorage', 'getMarker'), - RIGHT_PADDED_SET_L2_BLOCK_SELECTOR: getPaddedSelector('SystemContext', 'setL2Block'), - RIGHT_PADDED_APPEND_TRANSACTION_TO_L2_BLOCK_SELECTOR: getPaddedSelector('SystemContext', 'appendTransactionToCurrentL2Block'), - RIGHT_PADDED_PUBLISH_BATCH_DATA_TO_L1_SELECTOR: getPaddedSelector('SystemContext', 'publishBatchDataToL1'), + RIGHT_PADDED_VALIDATE_NONCE_USAGE_SELECTOR: getPaddedSelector("INonceHolder", "validateNonceUsage"), + RIGHT_PADDED_MINT_ETHER_SELECTOR: getPaddedSelector("L2EthToken", "mint"), + GET_TX_HASHES_SELECTOR: getSelector("BootloaderUtilities", "getTransactionHashes"), + CREATE_SELECTOR: getSelector("ContractDeployer", "create"), + CREATE2_SELECTOR: getSelector("ContractDeployer", "create2"), + CREATE_ACCOUNT_SELECTOR: getSelector("ContractDeployer", "createAccount"), + CREATE2_ACCOUNT_SELECTOR: getSelector("ContractDeployer", "create2Account"), + PADDED_TRANSFER_FROM_TO_SELECTOR: getPaddedSelector("L2EthToken", "transferFromTo"), + SUCCESSFUL_ACCOUNT_VALIDATION_MAGIC_VALUE: getPaddedSelector("IAccount", "validateTransaction"), + SUCCESSFUL_PAYMASTER_VALIDATION_MAGIC_VALUE: getPaddedSelector("IPaymaster", "validateAndPayForPaymasterTransaction"), + PUBLISH_COMPRESSED_BYTECODE_SELECTOR: getSelector("Compressor", "publishCompressedBytecode"), + GET_MARKER_PADDED_SELECTOR: getPaddedSelector("KnownCodesStorage", "getMarker"), + RIGHT_PADDED_SET_L2_BLOCK_SELECTOR: getPaddedSelector("SystemContext", "setL2Block"), + RIGHT_PADDED_APPEND_TRANSACTION_TO_L2_BLOCK_SELECTOR: getPaddedSelector( + "SystemContext", + "appendTransactionToCurrentL2Block" + ), + RIGHT_PADDED_PUBLISH_TIMESTAMP_DATA_TO_L1_SELECTOR: getPaddedSelector("SystemContext", "publishTimestampDataToL1"), COMPRESSED_BYTECODES_SLOTS: 32768, ENSURE_RETURNED_MAGIC: 1, FORBID_ZERO_GAS_PER_PUBDATA: 1, SYSTEM_CONTEXT_EXPECTED_CODE_HASH: getSystemContextExpectedHash(), UPGRADE_SYSTEM_CONTEXT_CALLDATA: upgradeSystemContextCalldata(), - ...SYSTEM_PARAMS + // One of "worst case" scenarios for the number of state diffs in a batch is when 120kb of pubdata is spent + // on repeated writes, that are all zeroed out. In this case, the number of diffs is 120k / 5 = 24k. This means that they will have + // accoomdate 6528000 bytes of calldata for the uncompressed state diffs. Adding 120k on top leaves us with + // roughly 6650000 bytes needed for calldata. 207813 slots are needed to accomodate this amount of data. + // We round up to 208000 slots just in case. + // + // In theory though much more calldata could be used (if for instance 1 byte is used for enum index). It is the responsibility of the + // operator to ensure that it can form the correct calldata for the L1Messenger. + OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS: 208000, + ...SYSTEM_PARAMS, }; +function extractTestFunctionNames(sourceCode: string): string[] { + // Remove single-line comments + sourceCode = sourceCode.replace(/\/\/[^\n]*/g, ""); + + // Remove multi-line comments + sourceCode = sourceCode.replace(/\/\*[\s\S]*?\*\//g, ""); + + const regexPatterns = [/function\s+(TEST\w+)/g]; + + const results: string[] = []; + for (const pattern of regexPatterns) { + let match; + while ((match = pattern.exec(sourceCode)) !== null) { + results.push(match[1]); + } + } + + return [...new Set(results)]; // Remove duplicates +} + +function createTestFramework(tests: string[]): string { + let testFramework = ` + let test_id:= mload(0) + + switch test_id + case 0 { + testing_totalTests(${tests.length}) + } + `; + + tests.forEach((value, index) => { + testFramework += ` + case ${index + 1} { + testing_start("${value}") + ${value}() + } + `; + }); + + testFramework += ` + default { + } + return (0, 0) + `; + + return testFramework; +} + async function main() { - const bootloader = await renderFile('bootloader/bootloader.yul', params); - // The overhead is unknown for gas tests and so it should be zero to calculate it - const gasTestBootloaderTemplate = await renderFile('bootloader/bootloader.yul', { + const bootloader = await renderFile("bootloader/bootloader.yul", params); + // The overhead is unknown for gas tests and so it should be zero to calculate it + const gasTestBootloaderTemplate = await renderFile("bootloader/bootloader.yul", { ...params, L2_TX_INTRINSIC_GAS: 0, L2_TX_INTRINSIC_PUBDATA: 0, L1_TX_INTRINSIC_L2_GAS: 0, L1_TX_INTRINSIC_PUBDATA: 0, - FORBID_ZERO_GAS_PER_PUBDATA: 0 - }) + FORBID_ZERO_GAS_PER_PUBDATA: 0, + }); - const feeEstimationBootloaderTemplate = await renderFile('bootloader/bootloader.yul', { + const feeEstimationBootloaderTemplate = await renderFile("bootloader/bootloader.yul", { ...params, - ENSURE_RETURNED_MAGIC: 0 + ENSURE_RETURNED_MAGIC: 0, }); - console.log('Preprocessing production bootloader'); - const provedBatchBootloader = preprocess.preprocess( - bootloader, - { BOOTLOADER_TYPE: 'proved_batch' } - ); - console.log('Preprocessing playground block bootloader'); - const playgroundBatchBootloader = preprocess.preprocess( + console.log("Preprocessing production bootloader"); + const provedBatchBootloader = preprocess.preprocess(bootloader, { BOOTLOADER_TYPE: "proved_batch" }); + console.log("Preprocessing playground block bootloader"); + const playgroundBatchBootloader = preprocess.preprocess(bootloader, { BOOTLOADER_TYPE: "playground_batch" }); + console.log("Preprocessing gas test bootloader"); + const gasTestBootloader = preprocess.preprocess(gasTestBootloaderTemplate, { BOOTLOADER_TYPE: "proved_batch" }); + console.log("Preprocessing fee estimation bootloader"); + const feeEstimationBootloader = preprocess.preprocess(feeEstimationBootloaderTemplate, { + BOOTLOADER_TYPE: "playground_batch", + }); + + // For impersonating block start + console.log('Preprocessing production impersonating bootloader'); + const provedBatchImpersonatingBootloader = preprocess.preprocess( bootloader, - { BOOTLOADER_TYPE: 'playground_batch' } - ); - console.log('Preprocessing gas test bootloader'); - const gasTestBootloader = preprocess.preprocess( - gasTestBootloaderTemplate, - { BOOTLOADER_TYPE: 'proved_batch' } + { BOOTLOADER_TYPE: 'proved_batch', ACCOUNT_IMPERSONATING: true } ); - console.log('Preprocessing fee estimation bootloader'); - const feeEstimationBootloader = preprocess.preprocess( - feeEstimationBootloaderTemplate, - { BOOTLOADER_TYPE: 'playground_batch' } + console.log('Preprocessing fee estimation impersonating bootloader'); + const feeEstimationImpersonatingBootloader = preprocess.preprocess( + bootloader, + { BOOTLOADER_TYPE: 'playground_batch', ACCOUNT_IMPERSONATING: true } ); + // For impersonating block end + + console.log("Preprocessing bootloader tests"); + const bootloaderTests = await renderFile("bootloader/tests/bootloader/bootloader_test.yul", {}); - if(!existsSync(OUTPUT_DIR)) { + const testMethods = extractTestFunctionNames(bootloaderTests); + + console.log("Found tests: " + testMethods); + + const testFramework = createTestFramework(testMethods); + + const bootloaderTestUtils = await renderFile("bootloader/tests/utils/test_utils.yul", {}); + + const bootloaderWithTests = await renderFile("bootloader/bootloader.yul", { + ...params, + CODE_START_PLACEHOLDER: "\n" + bootloaderTestUtils + "\n" + bootloaderTests + "\n" + testFramework, + }); + const provedBootloaderWithTests = preprocess.preprocess(bootloaderWithTests, { BOOTLOADER_TYPE: "proved_batch" }); + + if (!existsSync(OUTPUT_DIR)) { mkdirSync(OUTPUT_DIR); } - writeFileSync(`${OUTPUT_DIR}/proved_batch.yul`, provedBatchBootloader); - writeFileSync(`${OUTPUT_DIR}/playground_batch.yul`, playgroundBatchBootloader); - writeFileSync(`${OUTPUT_DIR}/gas_test.yul`, gasTestBootloader); - writeFileSync(`${OUTPUT_DIR}/fee_estimate.yul`, feeEstimationBootloader); + writeFileSync(path(`../${OUTPUT_DIR}/bootloader_test.yul`), provedBootloaderWithTests); + writeFileSync(path(`../${OUTPUT_DIR}/proved_batch.yul`), provedBatchBootloader); + writeFileSync(path(`../${OUTPUT_DIR}/playground_batch.yul`), playgroundBatchBootloader); + writeFileSync(path(`../${OUTPUT_DIR}/gas_test.yul`), gasTestBootloader); + writeFileSync(path(`../${OUTPUT_DIR}/fee_estimate.yul`), feeEstimationBootloader); + + // For impersonating block start + writeFileSync(path(`../${OUTPUT_DIR}/proved_batch_impersonating.yul`), provedBatchImpersonatingBootloader); + writeFileSync(path(`../${OUTPUT_DIR}/fee_estimate_impersonating.yul`), feeEstimationImpersonatingBootloader); + // For impersonating block end - console.log('Preprocessing done!'); + console.log("Preprocessing done!"); } main(); diff --git a/etc/system-contracts/scripts/quick-setup.sh b/etc/system-contracts/scripts/quick-setup.sh new file mode 100755 index 00000000..341d77d2 --- /dev/null +++ b/etc/system-contracts/scripts/quick-setup.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# install rust +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +rustup toolchain install nightly + +# install era-test-node +cargo +nightly install --git https://github.com/matter-labs/era-test-node.git --locked --branch boojum-integration + +yarn +yarn build +era_test_node run > /dev/null 2>&1 & export TEST_NODE_PID=$! +yarn test +kill $TEST_NODE_PID diff --git a/etc/system-contracts/scripts/utils.ts b/etc/system-contracts/scripts/utils.ts index b48a3d01..8ef1dfff 100644 --- a/etc/system-contracts/scripts/utils.ts +++ b/etc/system-contracts/scripts/utils.ts @@ -1,9 +1,12 @@ -import {Language, SYSTEM_CONTRACTS, YulContractDescrption} from "./constants"; -import {BigNumber, BigNumberish, BytesLike, ethers} from "ethers"; +import * as hre from "hardhat"; + +import type { Deployer } from "@matterlabs/hardhat-zksync-deploy"; +import type { BigNumberish, BytesLike } from "ethers"; +import { BigNumber, ethers } from "ethers"; import * as fs from "fs"; -import {hashBytecode} from "zksync-web3/build/src/utils"; -import * as hre from 'hardhat'; -import {Deployer} from "@matterlabs/hardhat-zksync-deploy"; +import { hashBytecode } from "zksync-web3/build/src/utils"; +import type { YulContractDescrption } from "./constants"; +import { Language, SYSTEM_CONTRACTS } from "./constants"; export interface Dependency { name: string; @@ -39,24 +42,26 @@ export interface ForceDeployment { } export async function outputSystemContracts(): Promise { - const upgradeParamsPromises: Promise[] = Object.values(SYSTEM_CONTRACTS).map(async (systemContractInfo) => { - let bytecode: string; - - if (systemContractInfo.lang === Language.Yul) { - bytecode = readYulBytecode(systemContractInfo); - } else { - bytecode = (await hre.artifacts.readArtifact(systemContractInfo.codeName)).bytecode; - } - const bytecodeHash = hashBytecode(bytecode); - - return { - bytecodeHash: ethers.utils.hexlify(bytecodeHash), - newAddress: systemContractInfo.address, - value: "0", - input: '0x', - callConstructor: false + const upgradeParamsPromises: Promise[] = Object.values(SYSTEM_CONTRACTS).map( + async (systemContractInfo) => { + let bytecode: string; + + if (systemContractInfo.lang === Language.Yul) { + bytecode = readYulBytecode(systemContractInfo); + } else { + bytecode = (await hre.artifacts.readArtifact(systemContractInfo.codeName)).bytecode; + } + const bytecodeHash = hashBytecode(bytecode); + + return { + bytecodeHash: ethers.utils.hexlify(bytecodeHash), + newAddress: systemContractInfo.address, + value: "0", + input: "0x", + callConstructor: false, + }; } - }); + ); return await Promise.all(upgradeParamsPromises); } @@ -65,14 +70,13 @@ export async function outputSystemContracts(): Promise { // and outputs the JSON that can be used for performing the necessary upgrade const DEFAULT_L2_TX_GAS_LIMIT = 2097152; - -// For the given dependencies, returns an array of tuples (bytecodeHash, marker), where +// For the given dependencies, returns an array of tuples (bytecodeHash, marker), where // for each dependency the bytecodeHash is its versioned hash and marker is whether // the hash has been published before. export async function getMarkers(dependencies: BytesLike[], deployer: Deployer): Promise<[string, boolean][]> { const contract = new ethers.Contract( SYSTEM_CONTRACTS.knownCodesStorage.address, - (await hre.artifacts.readArtifact('KnownCodesStorage')).abi, + (await hre.artifacts.readArtifact("KnownCodesStorage")).abi, deployer.zkWallet ); @@ -91,8 +95,8 @@ export async function getMarkers(dependencies: BytesLike[], deployer: Deployer): export async function checkMarkers(dependencies: BytesLike[], deployer: Deployer) { const markers = await getMarkers(dependencies, deployer); - for(const [bytecodeHash, marker] of markers) { - if(!marker) { + for (const [bytecodeHash, marker] of markers) { + if (!marker) { throw new Error(`Failed to mark ${bytecodeHash}`); } } @@ -110,34 +114,40 @@ export async function publishFactoryDeps( dependencies: Dependency[], deployer: Deployer, nonce: number, - gasPrice: BigNumber, + gasPrice: BigNumber ) { - if(dependencies.length == 0) { + if (dependencies.length == 0) { return []; } const bytecodes = getBytecodes(dependencies); const combinedLength = totalBytesLength(bytecodes); - console.log(`\nPublishing dependencies for contracts ${dependencies.map((dep) => {return dep.name}).join(', ')}`); + console.log( + `\nPublishing dependencies for contracts ${dependencies + .map((dep) => { + return dep.name; + }) + .join(", ")}` + ); console.log(`Combined length ${combinedLength}`); const txHandle = await deployer.zkWallet.requestExecute({ contractAddress: ethers.constants.AddressZero, - calldata: '0x', + calldata: "0x", l2GasLimit: DEFAULT_L2_TX_GAS_LIMIT, factoryDeps: bytecodes, overrides: { nonce, gasPrice, - gasLimit: 3000000 - } - }) + gasLimit: 3000000, + }, + }); console.log(`Transaction hash: ${txHandle.hash}`); // Waiting for the transaction to be processed by the server await txHandle.wait(); - console.log('Transaction complete! Checking markers on L2...'); + console.log("Transaction complete! Checking markers on L2..."); // Double checking that indeed the dependencies have been marked as known await checkMarkers(bytecodes, deployer); @@ -147,21 +157,21 @@ export async function publishFactoryDeps( export async function filterPublishedFactoryDeps( contractName: string, factoryDeps: string[], - deployer: Deployer, + deployer: Deployer ): Promise<[string[], number]> { console.log(`\nFactory dependencies for contract ${contractName}:`); let currentLength = 0; - let bytecodesToDeploy: string[] = []; + const bytecodesToDeploy: string[] = []; const hashesAndMarkers = await getMarkers(factoryDeps, deployer); - for(let i = 0; i < factoryDeps.length; i++) { + for (let i = 0; i < factoryDeps.length; i++) { const depLength = ethers.utils.arrayify(factoryDeps[i]).length; const [hash, marker] = hashesAndMarkers[i]; console.log(`${hash} (length: ${depLength} bytes) (deployed: ${marker})`); - if(!marker) { + if (!marker) { currentLength += depLength; bytecodesToDeploy.push(factoryDeps[i]); } diff --git a/etc/system-contracts/yarn.lock b/etc/system-contracts/yarn.lock index ca539f0c..166747de 100644 --- a/etc/system-contracts/yarn.lock +++ b/etc/system-contracts/yarn.lock @@ -2,6 +2,33 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@babel/code-frame@^7.0.0": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" @@ -63,6 +90,38 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== + "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" @@ -405,6 +464,30 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@fastify/busboy@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" + integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + dependencies: + "@humanwhocodes/object-schema" "^2.0.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -423,6 +506,16 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@matterlabs/eslint-config-typescript@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@matterlabs/eslint-config-typescript/-/eslint-config-typescript-1.1.2.tgz#a9be4e56aedf298800f247c5049fc412f8b301a7" + integrity sha512-AhiWJQr+MSE3RVfgp5XwGoMK7kNSKh6a18+T7hkNJtyycP0306I6IGmuFA5ZVbcakGb+K32fQWzepSkrNCTAGg== + +"@matterlabs/hardhat-zksync-chai-matchers@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-chai-matchers/-/hardhat-zksync-chai-matchers-0.1.4.tgz#105cb0ec1367c8fcd3ce7e3773f747c71fff675b" + integrity sha512-eGQWiImg51fmayoQ7smIK/T6QZkSu38PK7xjp1RIrewGzw2ZgqFWGp40jb5oomkf8yOQPk52Hu4TwE3Ntp8CtA== + "@matterlabs/hardhat-zksync-deploy@^0.6.5": version "0.6.5" resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-deploy/-/hardhat-zksync-deploy-0.6.5.tgz#fe56bf30850e71c8d328ac1a06a100c1a0af6e3e" @@ -444,6 +537,11 @@ proper-lockfile "^4.1.2" semver "^7.5.1" +"@matterlabs/prettier-config@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@matterlabs/prettier-config/-/prettier-config-1.0.3.tgz#3e2eb559c0112bbe9671895f935700dad2a15d38" + integrity sha512-JW7nHREPqEtjBWz3EfxLarkmJBD8vi7Kx/1AQ6eBZnz12eHc1VkOyrc6mpR5ogTf0dOUNXFAfZut+cDe2dn4kQ== + "@metamask/eth-sig-util@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -478,7 +576,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -486,31 +584,31 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/ethereumjs-block@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" - integrity sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q== - dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" +"@nomicfoundation/ethereumjs-block@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" + integrity sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" ethereum-cryptography "0.1.3" ethers "^5.7.1" -"@nomicfoundation/ethereumjs-blockchain@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" - integrity sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-ethash" "3.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" +"@nomicfoundation/ethereumjs-blockchain@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726" + integrity sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-ethash" "3.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" abstract-level "^1.0.3" debug "^4.3.3" ethereum-cryptography "0.1.3" @@ -518,108 +616,119 @@ lru-cache "^5.1.1" memory-level "^1.0.0" -"@nomicfoundation/ethereumjs-common@4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" - integrity sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg== +"@nomicfoundation/ethereumjs-common@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0" + integrity sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g== dependencies: - "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.1" crc-32 "^1.2.0" -"@nomicfoundation/ethereumjs-ethash@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" - integrity sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg== +"@nomicfoundation/ethereumjs-ethash@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" + integrity sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w== dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" abstract-level "^1.0.3" bigint-crypto-utils "^3.0.23" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-evm@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" - integrity sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ== +"@nomicfoundation/ethereumjs-evm@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1" + integrity sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ== dependencies: "@ethersproject/providers" "^5.7.1" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" debug "^4.3.3" ethereum-cryptography "0.1.3" mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/ethereumjs-rlp@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" - integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== +"@nomicfoundation/ethereumjs-rlp@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" + integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ== -"@nomicfoundation/ethereumjs-statemanager@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" - integrity sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA== +"@nomicfoundation/ethereumjs-statemanager@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" + integrity sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ== dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" debug "^4.3.3" ethereum-cryptography "0.1.3" ethers "^5.7.1" js-sdsl "^4.1.4" -"@nomicfoundation/ethereumjs-trie@6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" - integrity sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ== +"@nomicfoundation/ethereumjs-trie@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717" + integrity sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA== dependencies: - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" "@types/readable-stream" "^2.3.13" ethereum-cryptography "0.1.3" readable-stream "^3.6.0" -"@nomicfoundation/ethereumjs-tx@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" - integrity sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g== +"@nomicfoundation/ethereumjs-tx@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d" + integrity sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w== dependencies: "@chainsafe/ssz" "^0.9.2" "@ethersproject/providers" "^5.7.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-util@9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" - integrity sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ== +"@nomicfoundation/ethereumjs-util@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" + integrity sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA== dependencies: "@chainsafe/ssz" "^0.10.0" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-vm@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" - integrity sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-blockchain" "7.0.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-evm" "2.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-statemanager" "2.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" +"@nomicfoundation/ethereumjs-vm@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f" + integrity sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" debug "^4.3.3" ethereum-cryptography "0.1.3" mcl-wasm "^0.7.1" rustbn.js "~0.2.0" +"@nomicfoundation/hardhat-chai-matchers@^1.0.3": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" + integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + "@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" @@ -708,6 +817,18 @@ fs-extra "^7.0.1" solpp "^0.11.5" +"@pkgr/utils@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" + "@scure/base@~1.1.0": version "1.1.3" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" @@ -843,18 +964,10 @@ lodash "^4.17.15" ts-essentials "^7.0.1" -"@typechain/ethers-v6@0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.4.0.tgz#fb9e9b8eeadc455fd1fc9048b2340309860deaca" - integrity sha512-vD3Agzz63Gf2XlU3ed2/y+8dLWQj+wf+4Eq+0JXsyOio/plyV5F6r0yYe+s3XdGI858U3Sr263pl8mliDrUqbw== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@typechain/hardhat@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-8.0.0.tgz#60568b7a2d0260cc741fb0830a8caee8eb06ac64" - integrity sha512-XUVbqlMx8tJTOmzZCD/r196CidtNWAnTBZRcYxjLTKgcJMvc/kHQpWBnVMMB5QHxVKpYpCiz8g07FYCpG8rrjA== +"@typechain/hardhat@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-7.0.0.tgz#ffa7465328150e793007fee616ae7b76ed20784d" + integrity sha512-XB79i5ewg9Met7gMVGfgVkmypicbnI25T5clJBEooMoW2161p4zvKFpoS2O+lBppQyMrPIZkdvl2M3LMDayVcA== dependencies: fs-extra "^9.1.0" @@ -872,11 +985,38 @@ dependencies: "@types/node" "*" -"@types/chai@^4.3.1": +"@types/chai-as-promised@^7.1.3": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.6.tgz#3b08cbe1e7206567a480dc6538bade374b19e4e1" + integrity sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA== + dependencies: + "@types/chai" "*" + +"@types/chai@*": version "4.3.6" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.6.tgz#7b489e8baf393d5dd1266fb203ddd4ea941259e6" integrity sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw== +"@types/chai@^4.3.1": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07" + integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== + +"@types/json-schema@^7.0.12": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/lodash@^4.14.199": + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== + "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" @@ -938,6 +1078,101 @@ dependencies: "@types/node" "*" +"@types/semver@^7.5.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== + +"@typescript-eslint/eslint-plugin@^6.7.4": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz#fdb6f3821c0167e3356e9d89c80e8230b2e401f4" + integrity sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.9.0" + "@typescript-eslint/type-utils" "6.9.0" + "@typescript-eslint/utils" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.7.4": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.0.tgz#2b402cadeadd3f211c25820e5433413347b27391" + integrity sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw== + dependencies: + "@typescript-eslint/scope-manager" "6.9.0" + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/typescript-estree" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz#2626e9a7fe0e004c3e25f3b986c75f584431134e" + integrity sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw== + dependencies: + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" + +"@typescript-eslint/type-utils@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz#23923c8c9677c2ad41457cf8e10a5f2946be1b04" + integrity sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ== + dependencies: + "@typescript-eslint/typescript-estree" "6.9.0" + "@typescript-eslint/utils" "6.9.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.0.tgz#86a0cbe7ac46c0761429f928467ff3d92f841098" + integrity sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw== + +"@typescript-eslint/typescript-estree@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz#d0601b245be873d8fe49f3737f93f8662c8693d4" + integrity sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ== + dependencies: + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.0.tgz#5bdac8604fca4823f090e4268e681c84d3597c9f" + integrity sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.9.0" + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/typescript-estree" "6.9.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz#cc69421c10c4ac997ed34f453027245988164e80" + integrity sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg== + dependencies: + "@typescript-eslint/types" "6.9.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + JSONStream@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" @@ -946,6 +1181,13 @@ JSONStream@1.3.2: jsonparse "^1.2.0" through ">=2.2.7 <3" +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" @@ -959,6 +1201,11 @@ abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: module-error "^1.0.1" queue-microtask "^1.2.3" +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" @@ -969,6 +1216,11 @@ acorn@^8.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== +acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== + adm-zip@^0.4.16: version "0.4.16" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" @@ -994,6 +1246,26 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv@^6.12.4, ajv@^6.12.6: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1030,6 +1302,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +antlr4@^4.11.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1.tgz#1e0a1830a08faeb86217cb2e6c34716004e4253d" + integrity sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA== + antlr4@~4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.8.0.tgz#f938ec171be7fc2855cd3a533e87647185b32b6a" @@ -1073,6 +1350,74 @@ array-back@^4.0.1, array-back@^4.0.2: resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + asn1@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -1085,11 +1430,26 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +ast-parents@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" + integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -1126,6 +1486,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + bigint-crypto-utils@^3.0.23: version "3.3.0" resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" @@ -1176,6 +1541,13 @@ bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1295,18 +1667,32 @@ buildcheck@~0.0.6: resolved "https://registry.yarnpkg.com/buildcheck/-/buildcheck-0.0.6.tgz#89aa6e417cfd1e2196e3f8fe915eb709d2fe4238" integrity sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A== -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== dependencies: - streamsearch "^1.1.0" + run-applescript "^5.0.0" bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" @@ -1322,6 +1708,13 @@ catering@^2.1.0, catering@^2.1.1: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + dependencies: + check-error "^1.0.2" + chai@^4.3.6: version "4.3.8" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.8.tgz#40c59718ad6928da6629c70496fe990b2bb5b17c" @@ -1335,7 +1728,7 @@ chai@^4.3.6: pathval "^1.1.1" type-detect "^4.0.5" -chalk@4.1.2, chalk@^4.1.0: +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1474,6 +1867,11 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.19.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -1484,6 +1882,11 @@ commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== +commander@~9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1509,6 +1912,16 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + cpu-features@~0.0.8: version "0.0.9" resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.9.tgz#5226b92f0f1c63122b0a3eb84cb8335a4de499fc" @@ -1550,14 +1963,23 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.2.6: +debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -1574,18 +1996,64 @@ decimal.js-light@^2.5.0: resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== -deep-eql@^4.1.2: +deep-eql@^4.0.1, deep-eql@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== dependencies: type-detect "^4.0.0" -deep-extend@~0.6.0: +deep-extend@^0.6.0, deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -1601,6 +2069,13 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + docker-modem@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" @@ -1639,6 +2114,20 @@ dockerode@^3.3.4: docker-modem "^3.0.0" tar-fs "~2.0.1" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -1664,6 +2153,14 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -1672,17 +2169,99 @@ enquirer@^2.3.0: ansi-colors "^4.1.1" strip-ansi "^6.0.1" +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== @@ -1692,6 +2271,156 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" + +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-prettier@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.51.0: + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -1788,6 +2517,11 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1796,7 +2530,47 @@ evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -fast-glob@^3.2.12: +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2, fast-diff@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -1807,6 +2581,16 @@ fast-glob@^3.2.12: merge2 "^1.3.0" micromatch "^4.0.4" +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -1814,6 +2598,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1828,7 +2619,7 @@ find-replace@^3.0.0: dependencies: array-back "^3.0.1" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -1843,16 +2634,37 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +flat-cache@^3.0.4: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + follow-redirects@^1.12.1, follow-redirects@^1.14.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + fp-ts@1.19.3: version "1.19.3" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" @@ -1922,11 +2734,31 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -1937,6 +2769,41 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-stdin@~9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" + integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-tsconfig@^4.5.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1944,6 +2811,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -1980,32 +2854,98 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@~8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -hardhat@^2.11.0: - version "2.17.3" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.3.tgz#4cb15f2afdea5f108970ed72e5b81e6e53052cfb" - integrity sha512-SFZoYVXW1bWJZrIIKXOA+IgcctfuKXDwENywiYNT2dM3YQc4fXNaTbuk/vpPzHIF50upByx4zW5EqczKYQubsA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +hardhat@=2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.16.0.tgz#c5611d433416b31f6ce92f733b1f1b5236ad6230" + integrity sha512-7VQEJPQRAZdtrYUZaU9GgCpP3MBNy/pTdscARNJQMWKj5C+R7V32G5uIZKIqZ4QiqXa6CBfxxe+G+ahxUbHZHA== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-blockchain" "7.0.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-evm" "2.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-statemanager" "2.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - "@nomicfoundation/ethereumjs-vm" "7.0.2" + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-vm" "7.0.1" "@nomicfoundation/solidity-analyzer" "^0.1.0" "@sentry/node" "^5.18.1" "@types/bn.js" "^5.1.0" "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" adm-zip "^0.4.16" aggregate-error "^3.0.0" ansi-escapes "^4.3.0" @@ -2039,6 +2979,11 @@ hardhat@^2.11.0: uuid "^8.3.2" ws "^7.4.6" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2049,15 +2994,39 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - function-bind "^1.1.1" + get-intrinsic "^1.2.2" -hash-base@^3.0.0: - version "3.1.0" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: @@ -2073,6 +3042,13 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -2106,6 +3082,16 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -2118,11 +3104,29 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore@^5.2.0, ignore@^5.2.4, ignore@~5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + immutable@^4.0.0-rc.12: version "4.3.4" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -2141,6 +3145,20 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.1.tgz#c76ec81007875bc44d544ff7a11a55d12294102d" + integrity sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ== + +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + io-ts@1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" @@ -2148,6 +3166,27 @@ io-ts@1.10.4: dependencies: fp-ts "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2155,11 +3194,31 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-buffer@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-core-module@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" @@ -2167,6 +3226,23 @@ is-core-module@^2.13.0: dependencies: has "^1.0.3" +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2177,7 +3253,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -2189,31 +3265,125 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + js-sdsl@^4.1.4: version "4.4.2" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" @@ -2224,13 +3394,55 @@ js-sha3@0.8.0, js-sha3@^0.8.0: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-yaml@4.1.0: +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonc-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -2268,6 +3480,13 @@ keccak@^3.0.0, keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -2296,6 +3515,26 @@ level@^8.0.0: browser-level "^1.0.1" classic-level "^1.2.0" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -2316,7 +3555,17 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash@^4.17.11, lodash@^4.17.15: +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2360,6 +3609,39 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +markdown-it@13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" + integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== + dependencies: + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +markdownlint-cli@^0.33.0: + version "0.33.0" + resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.33.0.tgz#703af1234c32c309ab52fcd0e8bc797a34e2b096" + integrity sha512-zMK1oHpjYkhjO+94+ngARiBBrRDEUMzooDHBAHtmEIJ9oYddd9l3chCReY2mPlecwH7gflQp1ApilTo+o0zopQ== + dependencies: + commander "~9.4.1" + get-stdin "~9.0.0" + glob "~8.0.3" + ignore "~5.2.4" + js-yaml "^4.1.0" + jsonc-parser "~3.2.0" + markdownlint "~0.27.0" + minimatch "~5.1.2" + run-con "~1.2.11" + +markdownlint@~0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.27.0.tgz#9dabf7710a4999e2835e3c68317f1acd0bc89049" + integrity sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w== + dependencies: + markdown-it "13.0.1" + mcl-wasm@^0.7.1: version "0.7.9" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" @@ -2374,6 +3656,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + memory-level@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" @@ -2388,7 +3675,12 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== -merge2@^1.3.0: +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -2401,6 +3693,16 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -2418,13 +3720,20 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1, minimatch@~5.1.2: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimatch@^7.4.3: version "7.4.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" @@ -2432,7 +3741,7 @@ minimatch@^7.4.3: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -2518,9 +3827,9 @@ mz@^2.7.0: thenify-all "^1.0.0" nan@^2.17.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" - integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanoid@3.3.3: version "3.3.3" @@ -2532,6 +3841,11 @@ napi-macros@^2.2.2: resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" @@ -2554,11 +3868,73 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + obliterator@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" @@ -2571,6 +3947,47 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2623,6 +4040,23 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -2643,11 +4077,26 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pathington@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/pathington/-/pathington-1.1.7.tgz#caf2d2db899a31fea4e81e3657af6acde5171903" @@ -2669,11 +4118,26 @@ pbkdf2@^3.0.17: safe-buffer "^5.0.1" sha.js "^2.4.8" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + preprocess@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/preprocess/-/preprocess-3.2.0.tgz#36b3e2c52331fbc6fabb26d4fd5709304b7e3675" @@ -2681,7 +4145,14 @@ preprocess@^3.2.0: dependencies: xregexp "3.1.0" -prettier-plugin-solidity@^1.0.0-alpha.27: +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier-plugin-solidity@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== @@ -2690,11 +4161,21 @@ prettier-plugin-solidity@^1.0.0-alpha.27: semver "^7.3.8" solidity-comments-extractor "^0.0.7" -prettier@^2.1.2, prettier@^2.3.0, prettier@^2.3.1: +prettier@^2.1.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +prettier@^2.3.1, prettier@^2.8.3: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -2725,6 +4206,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -2791,16 +4277,35 @@ reduce-flatten@^2.0.0: resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^2.0.0: +require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve@1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -2817,6 +4322,15 @@ resolve@^1.10.0, resolve@^1.8.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -2834,6 +4348,13 @@ rimraf@^2.2.8: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -2849,6 +4370,23 @@ rlp@^2.2.3: dependencies: bn.js "^5.2.0" +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + +run-con@~1.2.11: + version "1.2.12" + resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.2.12.tgz#51c319910e45a3bd71ee773564a89d96635c8c64" + integrity sha512-5257ILMYIF4RztL9uoZ7V9Q97zHtNHn5bN3NobeAnzB1P3ASLgg8qocM2u+R18ttp+VEM78N2LK8XcNVtnSRrg== + dependencies: + deep-extend "^0.6.0" + ini "~3.0.0" + minimist "^1.2.8" + strip-json-comments "~3.1.1" + run-parallel-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" @@ -2868,6 +4406,16 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -2878,6 +4426,15 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3", safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -2902,12 +4459,12 @@ semver@^5.5.0, semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.0: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.8, semver@^7.5.1: +semver@^7.3.8, semver@^7.5.1, semver@^7.5.2, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -2921,6 +4478,25 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -2939,11 +4515,46 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -signal-exit@^3.0.2: +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + solc@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" @@ -2959,6 +4570,31 @@ solc@0.7.3: semver "^5.5.0" tmp "0.0.33" +solhint@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.6.2.tgz#2b2acbec8fdc37b2c68206a71ba89c7f519943fe" + integrity sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ== + dependencies: + "@solidity-parser/parser" "^0.16.0" + ajv "^6.12.6" + antlr4 "^4.11.0" + ast-parents "^0.0.1" + chalk "^4.1.2" + commander "^10.0.0" + cosmiconfig "^8.0.0" + fast-diff "^1.2.0" + glob "^8.0.3" + ignore "^5.2.4" + js-yaml "^4.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + semver "^7.5.2" + strip-ansi "^6.0.1" + table "^6.8.1" + text-table "^0.2.0" + optionalDependencies: + prettier "^2.8.3" + solidity-comments-extractor@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" @@ -3020,17 +4656,12 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - string-format@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3039,6 +4670,33 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3065,6 +4723,21 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -3072,7 +4745,7 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -3103,6 +4776,14 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + table-layout@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -3113,6 +4794,22 @@ table-layout@^1.0.2: typical "^5.2.0" wordwrapjs "^4.0.0" +table@^6.8.1: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar-fs@~1.16.3: version "1.16.3" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" @@ -3167,6 +4864,11 @@ template-file@^6.0.1: mkdirp "^1.0.4" p-limit "^4.0.0" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -3186,6 +4888,11 @@ thenify-all@^1.0.0: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + tmp@0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -3215,6 +4922,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-command-line-args@^2.2.0: version "2.5.1" resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" @@ -3277,11 +4989,26 @@ ts-node@^10.7.0: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" @@ -3302,11 +5029,23 @@ tweetnacl@^1.0.3: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -3333,6 +5072,45 @@ typechain@^8.1.1: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -3353,12 +5131,27 @@ typical@^5.2.0: resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + undici@^5.14.0: - version "5.24.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.24.0.tgz#6133630372894cfeb3c3dab13b4c23866bd344b5" - integrity sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ== + version "5.26.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.26.4.tgz#dc861c35fb53ae025a173a790d984aa9b2e279a1" + integrity sha512-OG+QOf0fTLtazL9P9X7yqWxQ+Z0395Wk6DSkyTxtaq3wQEjIroVe7Y4asCX/vcCxYpNGMnwz8F0qbRYUoaQVMw== dependencies: - busboy "^1.6.0" + "@fastify/busboy" "^2.0.0" universalify@^0.1.0: version "0.1.2" @@ -3375,6 +5168,18 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3403,6 +5208,35 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wordwrapjs@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" @@ -3513,7 +5347,7 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -zksync-web3@^0.13.0: - version "0.13.4" - resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.13.4.tgz#1c5b1303436cb4cba1a0873ea07860b19f385331" - integrity sha512-AjCKhn9TRqsk2T9VLKxlod22rnVWOWGOjq+QXppFe2yTxZx9dVaai325OJ0aa7a3m5wx+9yhPqBu23jG2xPo5Q== +zksync-web3@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" + integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ== diff --git a/scripts/refresh_contracts.sh b/scripts/refresh_contracts.sh index 0f325339..af6df722 100755 --- a/scripts/refresh_contracts.sh +++ b/scripts/refresh_contracts.sh @@ -6,13 +6,13 @@ DST_DIR=src/deps/contracts/ mkdir -p $DST_DIR -contracts=("AccountCodeStorage" "BootloaderUtilities" "BytecodeCompressor" "ComplexUpgrader" "ContractDeployer" "DefaultAccount" "DefaultAccountNoSecurity" "EmptyContract" "ImmutableSimulator" "KnownCodesStorage" "L1Messenger" "L2EthToken" "MsgValueSimulator" "NonceHolder" "SystemContext" ) +contracts=("AccountCodeStorage" "BootloaderUtilities" "Compressor" "ComplexUpgrader" "ContractDeployer" "DefaultAccount" "DefaultAccountNoSecurity" "EmptyContract" "ImmutableSimulator" "KnownCodesStorage" "L1Messenger" "L2EthToken" "MsgValueSimulator" "NonceHolder" "SystemContext" ) for contract in "${contracts[@]}"; do cp $SRC_DIR/$contract.sol/$contract.json $DST_DIR done -precompiles=("Ecrecover" "Keccak256" "SHA256") +precompiles=("EcAdd" "EcMul" "Ecrecover" "Keccak256" "SHA256") for precompile in "${precompiles[@]}"; do cp etc/system-contracts/contracts/precompiles/artifacts/$precompile.yul/$precompile.yul.zbin $DST_DIR @@ -21,7 +21,7 @@ done cp etc/system-contracts/contracts/artifacts/EventWriter.yul/EventWriter.yul.zbin $DST_DIR -bootloaders=("fee_estimate" "gas_test" "playground_batch" "proved_batch" ) +bootloaders=("fee_estimate" "gas_test" "playground_batch" "proved_batch" "proved_batch_impersonating" "fee_estimate_impersonating" ) for bootloader in "${bootloaders[@]}"; do cp etc/system-contracts/bootloader/build/artifacts/$bootloader.yul/$bootloader.yul.zbin $DST_DIR diff --git a/src/bootloader_debug.rs b/src/bootloader_debug.rs index 71fd6cb9..c83b9a80 100644 --- a/src/bootloader_debug.rs +++ b/src/bootloader_debug.rs @@ -1,7 +1,7 @@ -use multivm::interface::{dyn_tracers::vm_1_3_3::DynTracer, tracer::VmExecutionStopReason}; +use multivm::interface::{dyn_tracers::vm_1_4_0::DynTracer, tracer::VmExecutionStopReason}; use std::sync::Arc; -use multivm::vm_refunds_enhancement::{ +use multivm::vm_latest::{ constants::BOOTLOADER_HEAP_PAGE, BootloaderState, HistoryMode, SimpleMemory, VmTracer, ZkSyncVmState, }; diff --git a/src/data/address_map.json b/src/data/address_map.json index 46ecc7c1..edc9a5fe 100644 --- a/src/data/address_map.json +++ b/src/data/address_map.json @@ -66,7 +66,7 @@ ], [ "0x000000000000000000000000000000000000800e", - "Bytecode compressor", + "Compressor", "System" ], [ diff --git a/src/deps/contracts/AccountCodeStorage.json b/src/deps/contracts/AccountCodeStorage.json index 5732405f..b30e4be2 100644 --- a/src/deps/contracts/AccountCodeStorage.json +++ b/src/deps/contracts/AccountCodeStorage.json @@ -110,8 +110,8 @@ "type": "function" } ], - "bytecode": "0x0003000000000002000200000000000200020000000103550000006001100270000000740010019d000100000000001f0000008001000039000000400010043f0000000101200190000000370000c13d0000000001000031000000040110008c000000f80000413d0000000201000367000000000101043b000000e001100270000000760210009c0000003f0000213d0000007a0210009c000000620000613d0000007b0210009c000000b50000613d0000007c0110009c000000f80000c13d0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000101043b0000007f0210009c000000f80000213d000000000101041a000000400200043d00000000001204350000007401000041000000740320009c000000000102401900000040011002100000007e011001c7000001cc0001042e0000000001000416000000000101004b000000f80000c13d0000002001000039000001000010044300000120000004430000007501000041000001cc0001042e000000770210009c0000008b0000613d000000780210009c000000e20000613d000000790110009c000000f80000c13d0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000101043b01cb013e0000040f000000400200043d00000000001204350000007401000041000000740320009c000000000102401900000040011002100000007e011001c7000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000400310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000002010003670000000402100370000000000302043b0000007f0230009c000000f80000213d0000002401100370000000000101043b000200000001001d0000000001000411000080060110008c00000000010000190000000101006039000100000003001d01cb010e0000040f000000020100002900000080011001980000000001000019000000010100603901cb01260000040f00000002010000290000000102000029000000000012041b0000000001000019000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000400310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000002010003670000000402100370000000000302043b0000007f0230009c000000f80000213d0000002401100370000000000101043b000200000001001d0000000001000411000080060110008c00000000010000190000000101006039000100000003001d01cb010e0000040f00000002010000290000008001100197000000810110009c0000000001000019000000010100603901cb01260000040f00000002010000290000000102000029000000000012041b0000000001000019000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000101043b0000007f01100197000000030210008c00000000020000190000000102004039000000000101041a000000000301004b00000000030000190000000103006039000000000232019f0000008003100197000000810330009c0000000003000019000000010300603900000000023201a0000000db011002700000008301100197000000000100c019000000400200043d00000000001204350000007401000041000000740320009c000000000102401900000040011002100000007e011001c7000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000201043b0000007f0120009c000000fa0000a13d0000000001000019000001cd000104300000000001000411000080060110008c00000000010000190000000101006039000200000002001d01cb010e0000040f0000000201000029000000000101041a000100000001001d0000008001100197000000810110009c0000000001000019000000010100603901cb01260000040f000000010100002900000082011001970000000202000029000000000012041b0000000001000019000001cc0001042e000000000101004b000001110000613d000000000001042d000000400100043d00000064021000390000008403000041000000000032043500000044021000390000008503000041000000000032043500000024021000390000002d030000390000000000320435000000860200004100000000002104350000000402100039000000200300003900000000003204350000007402000041000000740310009c0000000001028019000000400110021000000087011001c7000001cd00010430000000000101004b000001290000613d000000000001042d000000400100043d00000064021000390000008803000041000000000032043500000044021000390000008903000041000000000032043500000024021000390000002e030000390000000000320435000000860200004100000000002104350000000402100039000000200300003900000000003204350000007402000041000000740310009c0000000001028019000000400110021000000087011001c7000001cd00010430000200000000000200000000020100190000008a010000410000007f02200197000000020320008c000001970000a13d000000000302041a000000000103004b0000014d0000613d00000080013001970000008a02000041000000810110009c00000000010300190000000001026019000001970000013d000100000003001d000000400400043d000200000004001d0000008b0100004100000000001404350000000401400039000000000021043500000074010000410000000002000414000000740320009c0000000002018019000000740340009c00000000010440190000004001100210000000c002200210000000000112019f0000008c011001c7000080030200003901cb01c60000040f000000020a000029000000000301001900000060033002700000007403300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001730000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000016b0000413d000000000705004b000001820000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000001980000613d0000001f01400039000000600210018f0000000001a20019000000000221004b000000000200001900000001020040390000008d0410009c000001be0000213d0000000102200190000001be0000c13d000000400010043f0000001f0130008c000001c40000a13d0000008a0100004100000000020a0433000000000202004b0000000103000029000001470000613d000000000001042d000000400200043d0000001f0430018f0000000503300272000001a50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000019d0000413d000000000504004b000001b40000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000074010000410000000103000031000000740430009c0000000003018019000000740420009c000000000102401900000040011002100000006002300210000000000112019f000001cd000104300000008e0100004100000000001004350000004101000039000000040010043f0000008c01000041000001cd000104300000000001000019000001cd00010430000001c9002104230000000102000039000000000001042d0000000002000019000000000001042d000001cb00000432000001cc0001042e000001cd000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000004f1e1bdf000000000000000000000000000000000000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000c2e4ff9700000000000000000000000000000000000000000000000000000000e03fe177000000000000000000000000000000000000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000001806aa18000000000000000000000000000000000000000000000000000000004de2e46880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000001fffe07374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000006f6e20636f6e7374727563746f72000000000000000000000000000000000000436f64652068617368206973206e6f7420666f72206120636f6e747261637420c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4705aa9b6b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6e642b0ab05486f2b28e4689878330ce2be1dfc2ed3f5fd7b741624703db3c0", - "deployedBytecode": "0x0003000000000002000200000000000200020000000103550000006001100270000000740010019d000100000000001f0000008001000039000000400010043f0000000101200190000000370000c13d0000000001000031000000040110008c000000f80000413d0000000201000367000000000101043b000000e001100270000000760210009c0000003f0000213d0000007a0210009c000000620000613d0000007b0210009c000000b50000613d0000007c0110009c000000f80000c13d0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000101043b0000007f0210009c000000f80000213d000000000101041a000000400200043d00000000001204350000007401000041000000740320009c000000000102401900000040011002100000007e011001c7000001cc0001042e0000000001000416000000000101004b000000f80000c13d0000002001000039000001000010044300000120000004430000007501000041000001cc0001042e000000770210009c0000008b0000613d000000780210009c000000e20000613d000000790110009c000000f80000c13d0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000101043b01cb013e0000040f000000400200043d00000000001204350000007401000041000000740320009c000000000102401900000040011002100000007e011001c7000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000400310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000002010003670000000402100370000000000302043b0000007f0230009c000000f80000213d0000002401100370000000000101043b000200000001001d0000000001000411000080060110008c00000000010000190000000101006039000100000003001d01cb010e0000040f000000020100002900000080011001980000000001000019000000010100603901cb01260000040f00000002010000290000000102000029000000000012041b0000000001000019000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000400310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000002010003670000000402100370000000000302043b0000007f0230009c000000f80000213d0000002401100370000000000101043b000200000001001d0000000001000411000080060110008c00000000010000190000000101006039000100000003001d01cb010e0000040f00000002010000290000008001100197000000810110009c0000000001000019000000010100603901cb01260000040f00000002010000290000000102000029000000000012041b0000000001000019000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000101043b0000007f01100197000000030210008c00000000020000190000000102004039000000000101041a000000000301004b00000000030000190000000103006039000000000232019f0000008003100197000000810330009c0000000003000019000000010300603900000000023201a0000000db011002700000008301100197000000000100c019000000400200043d00000000001204350000007401000041000000740320009c000000000102401900000040011002100000007e011001c7000001cc0001042e0000000001000416000000000101004b000000f80000c13d000000040100008a00000000011000310000007d02000041000000200310008c000000000300001900000000030240190000007d01100197000000000401004b000000000200a0190000007d0110009c00000000010300190000000001026019000000000101004b000000f80000c13d00000004010000390000000201100367000000000201043b0000007f0120009c000000fa0000a13d0000000001000019000001cd000104300000000001000411000080060110008c00000000010000190000000101006039000200000002001d01cb010e0000040f0000000201000029000000000101041a000100000001001d0000008001100197000000810110009c0000000001000019000000010100603901cb01260000040f000000010100002900000082011001970000000202000029000000000012041b0000000001000019000001cc0001042e000000000101004b000001110000613d000000000001042d000000400100043d00000064021000390000008403000041000000000032043500000044021000390000008503000041000000000032043500000024021000390000002d030000390000000000320435000000860200004100000000002104350000000402100039000000200300003900000000003204350000007402000041000000740310009c0000000001028019000000400110021000000087011001c7000001cd00010430000000000101004b000001290000613d000000000001042d000000400100043d00000064021000390000008803000041000000000032043500000044021000390000008903000041000000000032043500000024021000390000002e030000390000000000320435000000860200004100000000002104350000000402100039000000200300003900000000003204350000007402000041000000740310009c0000000001028019000000400110021000000087011001c7000001cd00010430000200000000000200000000020100190000008a010000410000007f02200197000000020320008c000001970000a13d000000000302041a000000000103004b0000014d0000613d00000080013001970000008a02000041000000810110009c00000000010300190000000001026019000001970000013d000100000003001d000000400400043d000200000004001d0000008b0100004100000000001404350000000401400039000000000021043500000074010000410000000002000414000000740320009c0000000002018019000000740340009c00000000010440190000004001100210000000c002200210000000000112019f0000008c011001c7000080030200003901cb01c60000040f000000020a000029000000000301001900000060033002700000007403300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001730000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000016b0000413d000000000705004b000001820000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000001980000613d0000001f01400039000000600210018f0000000001a20019000000000221004b000000000200001900000001020040390000008d0410009c000001be0000213d0000000102200190000001be0000c13d000000400010043f0000001f0130008c000001c40000a13d0000008a0100004100000000020a0433000000000202004b0000000103000029000001470000613d000000000001042d000000400200043d0000001f0430018f0000000503300272000001a50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000019d0000413d000000000504004b000001b40000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000074010000410000000103000031000000740430009c0000000003018019000000740420009c000000000102401900000040011002100000006002300210000000000112019f000001cd000104300000008e0100004100000000001004350000004101000039000000040010043f0000008c01000041000001cd000104300000000001000019000001cd00010430000001c9002104230000000102000039000000000001042d0000000002000019000000000001042d000001cb00000432000001cc0001042e000001cd000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000004f1e1bdf000000000000000000000000000000000000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000c2e4ff9700000000000000000000000000000000000000000000000000000000e03fe177000000000000000000000000000000000000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000001806aa18000000000000000000000000000000000000000000000000000000004de2e46880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000001fffe07374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000006f6e20636f6e7374727563746f72000000000000000000000000000000000000436f64652068617368206973206e6f7420666f72206120636f6e747261637420c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4705aa9b6b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6e642b0ab05486f2b28e4689878330ce2be1dfc2ed3f5fd7b741624703db3c0", + "bytecode": "0x00030000000000020002000000000002000200000001035500000060011002700000007c0010019d000100000000001f0000008001000039000000400010043f0000000101200190000000370000c13d0000000001000031000000040110008c000000ef0000413d0000000201000367000000000101043b000000e0011002700000007e0210009c0000003f0000213d000000820210009c000000620000613d000000830210009c000000820000613d000000840110009c000000ef0000c13d0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000101043b000000870210009c000000ef0000213d000000000101041a000000400200043d00000000001204350000007c010000410000007c0320009c0000000001024019000000400110021000000086011001c7000001ed0001042e0000000001000416000000000101004b000000ef0000c13d0000002001000039000001000010044300000120000004430000007d01000041000001ed0001042e0000007f0210009c000000af0000613d000000800210009c000000d90000613d000000810110009c000000ef0000c13d0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000101043b01ec015f0000040f000000400200043d00000000001204350000007c010000410000007c0320009c0000000001024019000000400110021000000086011001c7000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000400310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000002020003670000000401200370000000000101043b000000870310009c000000ef0000213d0000002402200370000000000202043b0000000003000411000080060330008c000001050000c13d00000088032001980000011a0000c13d000000000021041b0000000001000019000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000101043b0000008701100197000001000210008c00000000020000190000000102004039000000000101041a000000000301004b00000000030000190000000103006039000000000232019f0000008803100197000000890330009c0000000003000019000000010300603900000000023201a0000000db011002700000008b01100197000000000100c019000000400200043d00000000001204350000007c010000410000007c0320009c0000000001024019000000400110021000000086011001c7000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000400310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000002010003670000000402100370000000000302043b000000870230009c000000ef0000213d0000002401100370000000000101043b000200000001001d0000000001000411000080060110008c00000000010000190000000101006039000100000003001d01ec012f0000040f00000002010000290000008801100197000000890110009c0000000001000019000000010100603901ec01470000040f00000002010000290000000102000029000000000012041b0000000001000019000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000201043b000000870120009c000000f10000a13d0000000001000019000001ee000104300000000001000411000080060110008c00000000010000190000000101006039000200000002001d01ec012f0000040f0000000201000029000000000101041a000100000001001d0000008801100197000000890110009c0000000001000019000000010100603901ec01470000040f00000001010000290000008a011001970000000202000029000000000012041b0000000001000019000001ed0001042e000000400100043d00000064021000390000008c03000041000000000032043500000044021000390000008d03000041000000000032043500000024021000390000002d0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee00010430000000400100043d00000064021000390000009003000041000000000032043500000044021000390000009103000041000000000032043500000024021000390000002b0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee00010430000000000101004b000001320000613d000000000001042d000000400100043d00000064021000390000008c03000041000000000032043500000044021000390000008d03000041000000000032043500000024021000390000002d0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee00010430000000000101004b0000014a0000613d000000000001042d000000400100043d00000064021000390000009203000041000000000032043500000044021000390000009303000041000000000032043500000024021000390000002e0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee000104300002000000000002000000000201001900000094010000410000008702200197000000ff0320008c000001b80000a13d000000000302041a000000000103004b0000016e0000613d00000088013001970000009402000041000000890110009c00000000010300190000000001026019000001b80000013d000100000003001d000000400400043d000200000004001d00000095010000410000000000140435000000040140003900000000002104350000007c0100004100000000020004140000007c0320009c00000000020180190000007c0340009c00000000010440190000004001100210000000c002200210000000000112019f00000096011001c7000080030200003901ec01e70000040f000000020a000029000000000301001900000060033002700000007c03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001940000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000018c0000413d000000000705004b000001a30000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000001b90000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000970410009c000001df0000213d0000000102200190000001df0000c13d000000400010043f0000001f0130008c000001e50000a13d000000940100004100000000020a0433000000000202004b0000000103000029000001680000613d000000000001042d000000400200043d0000001f0430018f0000000503300272000001c60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000001be0000413d000000000504004b000001d50000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000007c0100004100000001030000310000007c0430009c00000000030180190000007c0420009c000000000102401900000040011002100000006002300210000000000112019f000001ee00010430000000980100004100000000001004350000004101000039000000040010043f0000009601000041000001ee000104300000000001000019000001ee00010430000001ea002104230000000102000039000000000001042d0000000002000019000000000001042d000001ec00000432000001ed0001042e000001ee00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000004f1e1bdf000000000000000000000000000000000000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000c2e4ff9700000000000000000000000000000000000000000000000000000000e03fe177000000000000000000000000000000000000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000001806aa18000000000000000000000000000000000000000000000000000000004de2e46880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000001fffe07374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000656420636f6e7472616374000000000000000000000000000000000000000000436f64652068617368206973206e6f7420666f72206120636f6e7374727563746f6e20636f6e7374727563746f72000000000000000000000000000000000000436f64652068617368206973206e6f7420666f72206120636f6e747261637420c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4705aa9b6b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003feb461a4c407970c4055ef207f89a1b4d8d50098197240a59e39b0630ca7988", + "deployedBytecode": "0x00030000000000020002000000000002000200000001035500000060011002700000007c0010019d000100000000001f0000008001000039000000400010043f0000000101200190000000370000c13d0000000001000031000000040110008c000000ef0000413d0000000201000367000000000101043b000000e0011002700000007e0210009c0000003f0000213d000000820210009c000000620000613d000000830210009c000000820000613d000000840110009c000000ef0000c13d0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000101043b000000870210009c000000ef0000213d000000000101041a000000400200043d00000000001204350000007c010000410000007c0320009c0000000001024019000000400110021000000086011001c7000001ed0001042e0000000001000416000000000101004b000000ef0000c13d0000002001000039000001000010044300000120000004430000007d01000041000001ed0001042e0000007f0210009c000000af0000613d000000800210009c000000d90000613d000000810110009c000000ef0000c13d0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000101043b01ec015f0000040f000000400200043d00000000001204350000007c010000410000007c0320009c0000000001024019000000400110021000000086011001c7000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000400310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000002020003670000000401200370000000000101043b000000870310009c000000ef0000213d0000002402200370000000000202043b0000000003000411000080060330008c000001050000c13d00000088032001980000011a0000c13d000000000021041b0000000001000019000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000101043b0000008701100197000001000210008c00000000020000190000000102004039000000000101041a000000000301004b00000000030000190000000103006039000000000232019f0000008803100197000000890330009c0000000003000019000000010300603900000000023201a0000000db011002700000008b01100197000000000100c019000000400200043d00000000001204350000007c010000410000007c0320009c0000000001024019000000400110021000000086011001c7000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000400310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000002010003670000000402100370000000000302043b000000870230009c000000ef0000213d0000002401100370000000000101043b000200000001001d0000000001000411000080060110008c00000000010000190000000101006039000100000003001d01ec012f0000040f00000002010000290000008801100197000000890110009c0000000001000019000000010100603901ec01470000040f00000002010000290000000102000029000000000012041b0000000001000019000001ed0001042e0000000001000416000000000101004b000000ef0000c13d000000040100008a00000000011000310000008502000041000000200310008c000000000300001900000000030240190000008501100197000000000401004b000000000200a019000000850110009c00000000010300190000000001026019000000000101004b000000ef0000c13d00000004010000390000000201100367000000000201043b000000870120009c000000f10000a13d0000000001000019000001ee000104300000000001000411000080060110008c00000000010000190000000101006039000200000002001d01ec012f0000040f0000000201000029000000000101041a000100000001001d0000008801100197000000890110009c0000000001000019000000010100603901ec01470000040f00000001010000290000008a011001970000000202000029000000000012041b0000000001000019000001ed0001042e000000400100043d00000064021000390000008c03000041000000000032043500000044021000390000008d03000041000000000032043500000024021000390000002d0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee00010430000000400100043d00000064021000390000009003000041000000000032043500000044021000390000009103000041000000000032043500000024021000390000002b0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee00010430000000000101004b000001320000613d000000000001042d000000400100043d00000064021000390000008c03000041000000000032043500000044021000390000008d03000041000000000032043500000024021000390000002d0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee00010430000000000101004b0000014a0000613d000000000001042d000000400100043d00000064021000390000009203000041000000000032043500000044021000390000009303000041000000000032043500000024021000390000002e0300003900000000003204350000008e0200004100000000002104350000000402100039000000200300003900000000003204350000007c020000410000007c0310009c000000000102801900000040011002100000008f011001c7000001ee000104300002000000000002000000000201001900000094010000410000008702200197000000ff0320008c000001b80000a13d000000000302041a000000000103004b0000016e0000613d00000088013001970000009402000041000000890110009c00000000010300190000000001026019000001b80000013d000100000003001d000000400400043d000200000004001d00000095010000410000000000140435000000040140003900000000002104350000007c0100004100000000020004140000007c0320009c00000000020180190000007c0340009c00000000010440190000004001100210000000c002200210000000000112019f00000096011001c7000080030200003901ec01e70000040f000000020a000029000000000301001900000060033002700000007c03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001940000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000018c0000413d000000000705004b000001a30000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000001b90000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000970410009c000001df0000213d0000000102200190000001df0000c13d000000400010043f0000001f0130008c000001e50000a13d000000940100004100000000020a0433000000000202004b0000000103000029000001680000613d000000000001042d000000400200043d0000001f0430018f0000000503300272000001c60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000001be0000413d000000000504004b000001d50000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000007c0100004100000001030000310000007c0430009c00000000030180190000007c0420009c000000000102401900000040011002100000006002300210000000000112019f000001ee00010430000000980100004100000000001004350000004101000039000000040010043f0000009601000041000001ee000104300000000001000019000001ee00010430000001ea002104230000000102000039000000000001042d0000000002000019000000000001042d000001ec00000432000001ed0001042e000001ee00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000004f1e1bdf000000000000000000000000000000000000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000c2e4ff9700000000000000000000000000000000000000000000000000000000e03fe177000000000000000000000000000000000000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000001806aa18000000000000000000000000000000000000000000000000000000004de2e46880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000001fffe07374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000656420636f6e7472616374000000000000000000000000000000000000000000436f64652068617368206973206e6f7420666f72206120636f6e7374727563746f6e20636f6e7374727563746f72000000000000000000000000000000000000436f64652068617368206973206e6f7420666f72206120636f6e747261637420c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4705aa9b6b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003feb461a4c407970c4055ef207f89a1b4d8d50098197240a59e39b0630ca7988", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/BootloaderUtilities.json b/src/deps/contracts/BootloaderUtilities.json index 1bc5272c..31da8323 100644 --- a/src/deps/contracts/BootloaderUtilities.json +++ b/src/deps/contracts/BootloaderUtilities.json @@ -110,8 +110,8 @@ "type": "function" } ], - "bytecode": "0x0004000000000002000d000000000002000000000301001900000060033002700000094c04300197000300000041035500020000000103550000094c0030019d000100000000001f000000800a0000390000004000a0043f0000000101200190000000910000c13d0000000001000031000000040110008c000004640000413d0000000201000367000000000101043b0000094e011001970000094f0110009c000004640000c13d0000000001000416000000000101004b000004640000c13d0000000001000031000000040310008a0000095002000041000000200430008c000000000400001900000000040240190000095005300197000000000605004b000000000200a019000009500550009c000000000204c019000000000202004b000004640000c13d00000002020003670000000404200370000000000904043b000009510490009c000004640000213d00000000039300490000095004000041000002600530008c000000000500001900000000050440190000095003300197000000000603004b000000000400a019000009500330009c00000000030500190000000003046019000000000303004b000004640000c13d0000000403900039000d00000003001d000000000332034f000000000303043b000000000403004b000000990000c13d000c00000009001d0000010401900039000000000112034f000000000101043b000000800210008c000000e10000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000b090000290000000003390436000000210420003900000005044002720000007d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000750000413d000000000400004b0000007f0000613d0000000004090433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000001c60000013d0000000001000416000000000101004b000004640000c13d0000002001000039000001000010044300000120000004430000094d010000410000252b0001042e000000710430008c000000eb0000c13d000001c403900039000000000332034f000000230400008a0000000004940049000b00000004001d0000000004140019000000000303043b0000095005000041000000000643004b0000000006000019000000000605801900000950044001970000095007300197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004430019000000000242034f000000000302043b000009510230009c000004640000213d000000000131004900000020044000390000095002000041000000000514004b0000000005000019000000000502201900000950011001970000095006400197000000000716004b0000000002008019000000000116013f000009500110009c00000000010500190000000001026019000000000101004b000004640000c13d00000000010004140000000202000367000000000503004b000003050000c13d0000000003000031000a0000000a001d000c00000009001d0000094c0410009c000004350000a13d000000400100043d000000440210003900000974030000410000000000320435000000240210003900000008030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000400200043d000b00000002001d000009570220009c000001480000a13d0000096f0100004100000000001004350000004101000039000000040010043f00000970010000410000252c00010430000000020130008c000001600000c13d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039000c00000009001d252a25200000040f0000000102200190000004640000613d000000000201043b000000800120008c000002970000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001350000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000012d0000413d000000000500004b000001370000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000002b40000013d0000000b070000290000004002700039000000400020043f0000000102000039000000000227043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000001500000413d0000000003070433000000000303004b000001bd0000c13d0000096f0100004100000000001004350000003201000039000000040010043f00000970010000410000252c00010430000000010130008c000002170000c13d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039000c00000009001d252a25200000040f0000000102200190000004640000613d000000000201043b000000800120008c000003150000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001aa0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001a20000413d000000000500004b000001ac0000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000003320000013d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f00000000001204350000000c01000029000000a4011000390000000201100367000000000201043b000000800120008c000002290000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000002040000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001fc0000413d000000000500004b000002060000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000002460000013d000000400100043d000000440210003900000952030000410000000000320435000000240210003900000017030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002330000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000c0200002900000064022000390000000202200367000000000302043b000000800230008c000003830000413d0000008002300270000009590430009c000000000203a019000009590430009c0000000004000019000000100400203900000008054001bf000009510620009c00000000040520190000004005200270000009510620009c000000000205201900000004054001bf0000094c0620009c000000000405201900000020052002700000094c0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000002840000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000027c0000413d000000000600004b000002860000613d0000000006020433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000003a00000013d000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002a10000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000302043b000000800230008c000004660000413d0000008002300270000009590430009c000000000203a019000009590430009c0000000004000019000000100400203900000008054001bf000009510620009c00000000040520190000004005200270000009510620009c000000000205201900000004054001bf0000094c0620009c000000000405201900000020052002700000094c0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000002f20000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000002ea0000413d000000000600004b000002f40000613d0000000006020433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000004830000013d0000094c054001970000000004430019000000000334004b0000000003000019000000010300403900000001033001900000030f0000c13d0000000003000031000000000643004b000004ef0000813d0000096f0100004100000000001004350000001101000039000000040010043f00000970010000410000252c00010430000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000031f0000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000202043b000000800320008c000004f20000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000003700000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000003680000413d000000000600004b000003720000613d0000000006030433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c0000000002002019000000210430003900000000002404350000050f0000013d000000400200043d000009570420009c000000e50000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a0000038d0000413d0000000005020433000000000505004b0000015a0000613d000000f8053002100000095006000041000000000303004b0000000003050019000000000306601900000000050404330000095805500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000003ae0000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b000003a70000413d000000000134001900000000000104350000000003020433000000000403004b000003bb0000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000003b40000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d000009510220009c000000e50000213d0000000101100190000000e50000c13d0000000901000029000000400010043f000009570110009c000000e50000213d0000000c0400002900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f00000020025000390000095b0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000006ed0000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000704000029000000000334043600000021042000390000000504400272000004200000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004180000413d000000000400004b000004220000613d00000007040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000702000029000000210220003900000000001204350000070d0000013d0000094c0330019700000000023203df000000c001100210000009610110019700000962011001c700000000011203af0000801002000039252a25250000040f000000000301001900000060033002700001094c0030019d0000094c0330019700030000000103550000000102200190000004d40000613d0000003f013000390000096301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f00000000013204360000001f0430003900000005044002720000045f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004570000413d000000000400004b000004610000613d0000000104000031000000000443004b000005ce0000a13d00000000010000190000252c00010430000000400200043d000009570420009c000000e50000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000004700000413d0000000005020433000000000505004b0000015a0000613d000000f8053002100000095006000041000000000303004b0000000003050019000000000306601900000000050404330000095805500197000000000335019f00000000003404350000000c03000029000000c4033000390000000203300367000000000303043b000000800430008c000005600000413d0000008004300270000009590530009c000000000403a019000009590530009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c000000e50000213d0000000107700190000000e50000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000004c10000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000004b90000413d000000000700004b000004c30000613d0000000007040433000000000707004b0000015a0000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c0000000003002019000000210540003900000000003504350000057d0000013d0000001f0430018f0000000502300272000004df0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000004d80000413d000000000504004b000004ed0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000252c00010430000000000252034f0000000003430049000000cb0000013d000000400300043d000009570430009c000000e50000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000004fc0000413d0000000005030433000000000505004b0000015a0000613d000000f8052002100000095006000041000000000202004b0000000002050019000000000206601900000000050404330000095805500197000000000225019f00000000002404350000000c02000029000000a4022000390000000202200367000000000202043b000000800420008c0000067f0000413d0000008004200270000009590520009c000000000402a019000009590520009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c000000e50000213d0000000107700190000000e50000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000054d0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000005450000413d000000000700004b0000054f0000613d0000000007040433000000000707004b0000015a0000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000069c0000013d000000400400043d000009570540009c000000e50000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000056a0000413d0000000006040433000000000606004b0000015a0000613d000000f8063002100000095007000041000000000303004b0000000003060019000000000307601900000000060504330000095806600197000000000336019f00000000003504350000000c03000029000000a4033000390000000203300367000000000303043b000000800530008c0000075c0000413d0000008005300270000009590630009c000000000503a019000009590630009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c000000e50000213d0000000108800190000000e50000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000005bb0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000005b30000413d000000000800004b000005bd0000613d0000000008050433000000000808004b0000015a0000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c000000000300201900000021065000390000000000360435000007790000013d00000003050003670000001f0430018f0000000503300272000005db0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000005d30000413d000000000604004b000005ea0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e5c0000c13d00000000040000310000000b0200002900000000052400190000000c0200002900000204032000390000000202000367000000000332034f000000000303043b0000095006000041000000000753004b0000000007000019000000000706801900000950055001970000095008300197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000505004b000004640000c13d0000000001010433000900000001001d0000000d010000290000000001130019000000000312034f000000000503043b000009510350009c000004640000213d0000000503500210000000000434004900000020061000390000095001000041000000000746004b0000000007000019000000000701201900000950044001970000095008600197000000000948004b0000000001008019000000000448013f000009500440009c000000000107c019000000000101004b000004640000c13d000000400100043d00000020041000390000096405500198000006290000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000006210000413d000000000200004b0000062b0000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000009510520009c000000e50000213d0000000103300190000000e50000c13d000000400020043f0000094c020000410000094c0340009c00000000030200190000000003044019000000400330021000000000010104330000094c0410009c00000000010280190000006001100210000000000131019f00000000030004140000094c0430009c0000000002034019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c03000029000004640000613d00000000020000310000000b04000029000000000542001900000224043000390000000203000367000000000443034f000000000404043b0000095006000041000000000754004b0000000007000019000000000706801900000950055001970000095008400197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000101043b000b00000001001d000000000105004b000004640000c13d0000000d010000290000000001140019000000000313034f000000000303043b000009510430009c000004640000213d000000000232004900000020041000390000095001000041000000000524004b0000000005000019000000000501201900000950022001970000095006400197000000000726004b0000000001008019000000000226013f000009500220009c000000000105c019000000000101004b000004640000c13d00000000010004140000000202000367000000000503004b00000bbd0000c13d000000000300003100000bc50000013d000000400400043d000009570540009c000000e50000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a000006890000413d0000000006040433000000000606004b0000015a0000613d000000f8062002100000095007000041000000000202004b0000000002060019000000000207601900000000060504330000095806600197000000000226019f00000000002504350000000c0200002900000064022000390000000202200367000000000202043b000000800520008c000007ca0000413d0000008005200270000009590620009c000000000502a019000009590620009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c000000e50000213d0000000108800190000000e50000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000006da0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000006d20000413d000000000800004b000006dc0000613d0000000008050433000000000808004b0000015a0000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000007e70000013d000000400200043d000700000002001d000009570220009c000000e50000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000006f90000413d00000007030000290000000003030433000000000303004b0000015a0000613d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f0000000000120435000000230100008a0000000c020000290000000004210049000001c4012000390000000202000367000600000001001d000000000112034f000000000101043b0000000003000031000500000004001d00000000044300190000095005000041000000000641004b0000000006000019000000000605801900000950044001970000095007100197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004410019000000000142034f000000000101043b000009510510009c000004640000213d000000000513004900000020034000390000095004000041000000000653004b0000000006000019000000000604201900000950055001970000095007300197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d000000010410008c0000098b0000c13d000000000132034f000000000101043b000000010200008a0000095003000041000000000221004b000000000200001900000000020320190000095001100197000009500410009c00000000030080190000095001100167000009500110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b00000ab00000c13d000000400100043d000400000001001d000009570110009c000000e50000213d00000004030000290000004001300039000000400010043f00000020013000390000095a0200004100000000002104350000000101000039000000000013043500000ab00000013d000000400500043d000009570650009c000000e50000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000007660000413d0000000007050433000000000707004b0000015a0000613d000000f8073002100000095008000041000000000303004b0000000003070019000000000308601900000000070604330000095807700197000000000337019f00000000003604350000000c0300002900000064033000390000000203300367000000000303043b000000800630008c000008480000413d0000008006300270000009590730009c000000000603a019000009590730009c0000000007000019000000100700203900000008087001bf000009510960009c00000000070820190000004008600270000009510960009c000000000608201900000004087001bf0000094c0960009c000000000708201900000020086002700000094c0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000009510a80009c000000e50000213d0000000109900190000000e50000c13d000000400080043f0000000208700039000000000886043600000021097000390000000509900272000007b70000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000007af0000413d000000000900004b000007b90000613d0000000009060433000000000909004b0000015a0000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095a0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c000000000300201900000021076000390000000000370435000008650000013d000000400500043d000009570650009c000000e50000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000007d40000413d0000000007050433000000000707004b0000015a0000613d000000f8072002100000095008000041000000000202004b0000000002070019000000000208601900000000070604330000095807700197000000000227019f0000000000260435000000400600043d000009570260009c000000e50000213d0000000c0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000095b0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c000008c60000413d0000008007200270000009590820009c000000000702a019000009590820009c0000000008000019000000100800203900000008098001bf000009510a70009c00000000080920190000004009700270000009510a70009c000000000709201900000004098001bf0000094c0a70009c000000000809201900000020097002700000094c0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000009510b90009c000000e50000213d000000010aa00190000000e50000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa00272000008350000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b0000082d0000413d000000000a00004b000008370000613d000000000a070433000000000a0a004b0000015a0000613d000000000a090433000009580aa00197000000f80b800210000000000aab019f0000095a0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c000000000200201900000021087000390000000000280435000008e30000013d000000400600043d000009570760009c000000e50000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000008520000413d0000000008060433000000000808004b0000015a0000613d000000f8083002100000095009000041000000000303004b0000000003080019000000000309601900000000080704330000095808800197000000000338019f0000000000370435000000400700043d000009570370009c000000e50000213d0000000c0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000095b090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c000009c10000413d0000008008300270000009590930009c000000000803a019000009590930009c00000000090000190000001009002039000000080a9001bf000009510b80009c00000000090a2019000000400a800270000009510b80009c00000000080a2019000000040a9001bf0000094c0b80009c00000000090a2019000000200a8002700000094c0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000009510ca0009c000000e50000213d000000010bb00190000000e50000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000008b30000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b000008ab0000413d000000000b00004b000008b50000613d000000000b080433000000000b0b004b0000015a0000613d000000000b0a0433000009580bb00197000000f80c900210000000000bbc019f0000095a0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c000000000300201900000021098000390000000000390435000009de0000013d000000400700043d000009570870009c000000e50000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000008d00000413d0000000009070433000000000909004b0000015a0000613d000000f809200210000009500a000041000000000202004b000000000209001900000000020a601900000000090804330000095809900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b000008f00000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b000008e90000413d000000000189001900000000000104350000000008030433000000000908004b000008fd0000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b000008f60000413d000000000118001900000000000104350000000003040433000000000803004b0000090a0000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b000009030000413d000000000113001900000000000104350000000003050433000000000403004b000009170000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b000009100000413d000000000113001900000000000104350000000003060433000000000403004b000009240000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b0000091d0000413d000000000113001900000000000104350000000003070433000000000403004b000009310000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b0000092a0000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000009510450009c000000e50000213d0000000103300190000000e50000c13d000000400050043f000000230300008a0000000c060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000009500a000041000000000b96004b000000000b000019000000000b0a80190000095009900197000009500c600197000000000d9c004b000000000a00801900000000099c013f000009500990009c00000000090b001900000000090a6019000000000909004b000004640000c13d0000000d090000290000000009960019000000000697034f000000000606043b000009510a60009c000004640000213d000000000a68004900000020089000390000095009000041000000000ba8004b000000000b000019000000000b092019000009500aa00197000009500c800197000000000dac004b0000000009008019000000000aac013f000009500aa0009c00000000090bc019000000000909004b000004640000c13d000000010960008c00000e6e0000c13d000000000687034f000000000606043b000000010700008a0000095008000041000000000776004b000000000700001900000000070820190000095006600197000009500960009c00000000080080190000095006600167000009500660009c00000000070860190000006006000039000000000707004b00000f070000c13d000009570650009c000000e50000213d0000004006500039000000400060043f00000020065000390000095a07000041000000000076043500000001060000390000000000650435000000000605001900000f070000013d000000380210008c00000a930000413d00000020021002700000094c0310009c000000000301001900000000030220190000094c0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000009570440009c000000e50000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000009a90000413d00000004040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095c044001c700000000004304350000000302200210000000f80220008900000000012101cf00000004020000290000002102200039000000000012043500000ab00000013d000000400800043d000009570980009c000000e50000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000009cb0000413d000000000a080433000000000a0a004b0000015a0000613d000000f80a300210000009500b000041000000000303004b00000000030a001900000000030b6019000000000a090433000009580aa0019700000000033a019f0000000000390435000000400300043d0000002009300039000000000a010433000000000b0a004b000009eb0000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b000009e40000413d00000000019a001900000000000104350000000009020433000000000a09004b000009f80000613d000000000a000019000000000b1a0019000000200aa00039000000000c2a0019000000000c0c04330000000000cb0435000000000b9a004b000009f10000413d000000000119001900000000000104350000000002040433000000000902004b00000a050000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a29004b000009fe0000413d000000000112001900000000000104350000000002050433000000000402004b00000a120000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000924004b00000a0b0000413d000000000112001900000000000104350000000002060433000000000402004b00000a1f0000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000524004b00000a180000413d000000000112001900000000000104350000000002070433000000000402004b00000a2c0000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000a250000413d000000000112001900000000000104350000000002080433000000000402004b00000a390000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000524004b00000a320000413d000000000112001900000000000104350000000001310049000000200210008a00000000002304350000001f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000009510450009c000000e50000213d0000000102200190000000e50000c13d000000400050043f000000230200008a0000000c060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000009500a000041000000000b96004b000000000b000019000000000b0a80190000095009900197000009500c600197000000000d9c004b000000000a00801900000000099c013f000009500990009c00000000090b001900000000090a6019000000000909004b000004640000c13d0000000d090000290000000009960019000000000697034f000000000606043b000009510a60009c000004640000213d000000000a68004900000020089000390000095009000041000000000ba8004b000000000b000019000000000b092019000009500aa00197000009500c800197000000000dac004b0000000009008019000000000aac013f000009500aa0009c00000000090bc019000000000909004b000004640000c13d000000010960008c00000ebb0000c13d000000000687034f000000000606043b000000010700008a0000095008000041000000000776004b000000000700001900000000070820190000095006600197000009500960009c00000000080080190000095006600167000009500660009c00000000070860190000006006000039000000000707004b00000f9a0000c13d000009570650009c000000e50000213d0000004006500039000000400060043f00000020065000390000095a07000041000000000076043500000001060000390000000000650435000000000605001900000f9a0000013d000000400200043d000400000002001d000009570220009c000000e50000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000a9f0000413d00000004030000290000000003030433000000000303004b0000015a0000613d000000f80110021000000000030204330000095803300197000000000113019f0000095001100167000000000012043500000060010000390000000c0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b00000b250000c13d0000000603000029000000000432034f000000000300003100000005050000290000000005530019000000000904043b0000095004000041000000000659004b0000000006000019000000000604801900000950055001970000095007900197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d0000000b0400002900000000040404330000000a0500002900000000050504330000000906000029000000000606043300000007070000290000000007070433000000040800002900000000080804330000000d0a0000290000000009a90019000000000292034f000000000202043b000009510a20009c000004640000213d00000000032300490000002009900039000009500a000041000000000b39004b000000000b000019000000000b0a201900000950033001970000095009900197000000000c39004b000000000a008019000000000339013f000009500330009c00000000030b001900000000030a6019000000000303004b000004640000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000095102200197000000380320008c00000ccb0000413d00000020032002700000094c0420009c000000000402001900000000040320190000094c0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009570650009c000000e50000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a00000b0f0000413d0000000006050433000000000606004b0000015a0000613d00000000060404330000095806600197000000f807300210000000000667019f0000095e066001c700000000006404350000000303300210000000f80330008900000000023201cf0000002103500039000000000023043500000ce50000013d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000102200190000004640000613d000000000101043b000000800210008c00000b7f0000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000804000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f000000020430003900000000044204360000002105300039000000050550027200000b6c0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00000b640000413d000000000500004b00000b6e0000613d0000000005020433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c00000000010020190000002103200039000000000013043500000b9c0000013d000000400200043d000009570320009c000000e50000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000b890000413d0000000004020433000000000404004b0000015a0000613d000000f8041002100000095005000041000000000101004b0000000001040019000000000105601900000000040304330000095804400197000000000114019f0000000000130435000000400100043d00000020031000390000000004020433000000000504004b00000ba90000613d000000000500001900000000063500190000002005500039000000000725001900000000070704330000000000760435000000000645004b00000ba20000413d00000000023400190000096d03000041000000000032043500000000021200490000001e0320008a000000000031043500000021022000390000000803000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000009510420009c000000e50000213d0000000103300190000000e50000c13d000000400020043f000000020200036700000ab80000013d000000000343001a0000094c044001970000030f0000413d0000000005000031000000000635004b0000030f0000413d000000000242034f00000000033500490000094c0410009c000000cf0000213d0000094c0330019700000000023203df000000c001100210000009610110019700000962011001c700000000011203af0000801002000039252a25250000040f000000000301001900000060033002700001094c0030019d0000094c033001970003000000010355000000010220019000000ea00000613d0000003f013000390000096301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f00000000013204360000001f04300039000000050440027200000bf10000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000be90000413d000000000400004b00000bf30000613d0000000104000031000000000443004b000004640000213d00000003050003670000001f0430018f000000050330027200000c030000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000bfb0000413d000000000604004b00000c120000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e5c0000c13d0000000c0b0000290000006402b000390000000203000367000000000523034f0000004402b00039000000000423034f0000002402b00039000000000623034f0000008402b00039000000a407b00039000000c408b00039000000e409b00039000001040ab00039000001240bb00039000000000bb3034f000000000aa3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000d02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000a0a043b000000000b0b043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c1000390000000b0d0000290000000000dc0435000001800c100039000000090d0000290000000000dc0435000001600c1000390000000000bc0435000001400b1000390000000000ab0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000965030000410000000000320435000001c0030000390000000000310435000009660310009c000000e50000213d000001e003100039000000400030043f0000094c030000410000094c0420009c0000000002038019000000400220021000000000010104330000094c0410009c00000000010380190000006001100210000000000121019f00000000020004140000094c0420009c0000000002038019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000101043b000900000001001d000000400100043d000b00000001001d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000a040000290000000102200190000004640000613d0000000b050000290000002002500039000000000101043b000009670300004100000000003204350000008003500039000000000013043500000060015000390000096803000041000000000031043500000040015000390000096903000041000000000031043500000000004504350000096a0150009c000000e50000213d0000000b04000029000000a001400039000000400010043f0000094c010000410000094c0320009c0000000002018019000000400220021000000000030404330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000301043b000000400100043d00000042021000390000000904000029000000000042043500000020021000390000096b04000041000000000042043500000022041000390000000000340435000000420300003900000000003104350000096c0310009c000000e50000213d0000008003100039000000400030043f0000094c030000410000094c0420009c0000000002038019000000400220021000000000010104330000094c0410009c00000000010380190000006001100210000000000121019f00000000020004140000094c0420009c0000000002038019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b00002900000db30000c13d000004640000013d000000400500043d000009570350009c000000e50000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a00000cd50000413d0000000004050433000000000404004b0000015a0000613d000000f80220021000000000040304330000095804400197000000000242019f0000095d02200041000000000023043500000000020000310000000503000029000000000632001900000002030003670000000604000029000000000443034f000000000404043b0000095007000041000000000864004b0000000008000019000000000807801900000950066001970000095009400197000000000a69004b0000000007008019000000000669013f000009500660009c00000000060800190000000006076019000000000606004b000004640000c13d0000000d060000290000000006640019000000000363034f000000000403043b000009510340009c000004640000213d000000000242004900000020066000390000095003000041000000000726004b0000000007000019000000000703201900000950022001970000095008600197000000000928004b0000000003008019000000000228013f000009500220009c00000000020700190000000002036019000000000202004b000004640000c13d000000400200043d00000020032000390000000007050433000000000807004b00000d1d0000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b00000d160000413d000000000537001900000000000504350000000b0b00002900000000070b0433000000000807004b00000d2b0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d240000413d000000000557001900000000000504350000000a0b00002900000000070b0433000000000807004b00000d390000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d320000413d00000000055700190000000000050435000000090b00002900000000070b0433000000000807004b00000d470000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d400000413d00000000055700190000000000050435000000070b00002900000000070b0433000000000807004b00000d550000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d4e0000413d00000000055700190000000000050435000000040b00002900000000070b0433000000000807004b00000d630000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d5c0000413d00000000055700190000001f0740018f00000000000504350000000206600367000000050840027200000d720000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b00000d6a0000413d000000000907004b00000d810000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b00000d8e0000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b00000d870000413d000000000145001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f0000094c010000410000094c0430009c0000000003018019000000400330021000000000020204330000094c0420009c00000000020180190000006002200210000000000232019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b000029000004640000613d00000002020003670000000d03000029000000000332034f000000000101043b000c00000001001d000000000103043b000000710310008c000010130000c13d000001e401b00039000000000312034f00000000010000310000000004b10049000000230440008a000000000303043b0000095005000041000000000643004b0000000006000019000000000605801900000950044001970000095007300197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004430019000000000242034f000000000302043b000009510230009c000004640000213d000000000131004900000020044000390000095002000041000000000514004b0000000005000019000000000502201900000950011001970000095006400197000000000716004b0000000002008019000000000116013f000009500110009c00000000010500190000000001026019000000000101004b000004640000c13d00000000010004140000000202000367000000000503004b000012760000c13d00000000030000310000094c0410009c000000cf0000213d0000094c0330019700000000023203df000000c001100210000009610110019700000962011001c700000000011203af0000801002000039252a25250000040f000000000301001900000060033002700001094c0030019d0000094c0330019700030000000103550000000102200190000012ec0000613d0000003f013000390000096302100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000009510520009c000000e50000213d0000000104400190000000e50000c13d000000400020043f00000000023104360000001f04300039000000050440027200000e160000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000e0e0000413d000000000400004b00000e180000613d0000000104000031000000000443004b000004640000213d00000003050003670000001f0430018f000000050330027200000e280000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000e200000413d000000000604004b00000e370000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000e5c0000c13d0000000002020433000000400100043d0000004003100039000000000023043500000020021000390000000c03000029000000000032043500000040030000390000000000310435000009720310009c000000e50000213d0000006003100039000000400030043f0000094c030000410000094c0420009c0000000002038019000000400220021000000000010104330000094c0410009c00000000010380190000006001100210000000000121019f00000000020004140000094c0420009c0000000002038019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000101043b0000125a0000013d000000400100043d00000044021000390000097103000041000000000032043500000024021000390000001f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000380760008c00000eed0000413d00000020076002700000094c0860009c000000000806001900000000080720190000094c0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009570950009c000000e50000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e890000413d0000000009050433000000000909004b0000015a0000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095c099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000f070000013d0000001f0430018f000000050230027200000eab0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000ea40000413d000000000504004b00000eb90000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000252c00010430000000380760008c00000f800000413d00000020076002700000094c0860009c000000000806001900000000080720190000094c0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009570950009c000000e50000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000ed60000413d0000000009050433000000000909004b0000015a0000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095c099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000f9a0000013d000009570750009c000000e50000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000ef60000413d0000000008050433000000000808004b0000015a0000613d000000f80660021000000000080704330000095808800197000000000668019f000009500660016700000000006704350000000006050019000000400500043d000009570750009c000000e50000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000f110000413d0000000009050433000000000909004b0000015a0000613d000000000907043300000958099001970000095d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000009500a000041000000000d9c004b000000000d000019000000000d0a80190000095009900197000009500ec00197000000000f9e004b000000000a00801900000000099e013f000009500990009c00000000090d001900000000090a6019000000000909004b000004640000c13d0000000009020433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b000009510db0009c000004640000213d0000000007b70049000000200cc00039000009500d000041000000000e7c004b000000000e000019000000000e0d20190000095007700197000009500cc00197000000000f7c004b000000000d00801900000000077c013f000009500770009c00000000070e001900000000070d6019000000000707004b000004640000c13d00000000079a00190000000007b70019000000000905043300000000079700190000095109700197000000380790008c000010690000413d00000020079002700000094c0890009c000000000709a0190000094c0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009570b70009c000000e50000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000f6a0000413d000000000b070433000000000b0b004b0000015a0000613d000000000b0a0433000009580bb00197000000f80c800210000000000bbc019f0000095e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000010820000013d000009570750009c000000e50000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000f890000413d0000000008050433000000000808004b0000015a0000613d000000f80660021000000000080704330000095808800197000000000668019f000009500660016700000000006704350000000006050019000000400500043d000009570750009c000000e50000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000fa40000413d0000000009050433000000000909004b0000015a0000613d000000000907043300000958099001970000095d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000009500a000041000000000d9c004b000000000d000019000000000d0a80190000095009900197000009500ec00197000000000f9e004b000000000a00801900000000099e013f000009500990009c00000000090d001900000000090a6019000000000909004b000004640000c13d0000000009030433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b000009510db0009c000004640000213d0000000007b70049000000200cc00039000009500d000041000000000e7c004b000000000e000019000000000e0d20190000095007700197000009500cc00197000000000f7c004b000000000d00801900000000077c013f000009500770009c00000000070e001900000000070d6019000000000707004b000004640000c13d00000000079a00190000000007b70019000000000905043300000000079700190000095109700197000000380790008c0000112a0000413d00000020079002700000094c0890009c000000000709a0190000094c0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009570b70009c000000e50000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000ffd0000413d000000000b070433000000000b0b004b0000015a0000613d000000000b0a0433000009580bb00197000000f80c800210000000000bbc019f0000095e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000011430000013d000000000301004b000011250000c13d0000010401b00039000000000112034f000000000101043b000000800210008c000011e60000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000b04000029000000000334043600000021042000390000000504400272000010540000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000104c0000413d000000000400004b000010560000613d0000000b040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000012060000013d000000400700043d000009570a70009c000000e50000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000010720000413d000000000a070433000000000a0a004b0000015a0000613d000000f809900210000000000a080433000009580aa001970000000009a9019f0000095d099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000009500a000041000000000b83004b000000000b000019000000000b0a80190000095008800197000009500c300197000000000d8c004b000000000a00801900000000088c013f000009500880009c00000000080b001900000000080a6019000000000808004b000004640000c13d0000000d080000290000000003830019000000000434034f000000000804043b000009510480009c000004640000213d000000000489004900000020093000390000095003000041000000000a49004b000000000a000019000000000a0320190000095004400197000009500b900197000000000c4b004b000000000300801900000000044b013f000009500440009c00000000030ac019000000000303004b000004640000c13d000000400300043d00000020043000390000095f0a0000410000000000a40435000000210a300039000000000b070433000000000c0b004b000010ba0000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b000010b30000413d0000000007ab00190000000000070435000000000a020433000000000b0a004b000010c70000613d000000000b000019000000000c7b0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000cab004b000010c00000413d00000000027a001900000000000204350000000007060433000000000a07004b000010d40000613d000000000a000019000000000b2a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b000010cd0000413d00000000022700190000001f0680018f000000000002043500000002079003670000000509800272000010e30000613d000000000a000019000000050ba00210000000000cb20019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000010db0000413d000000000a06004b000010f20000613d0000000509900210000000000797034f00000000099200190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000282001900000000000204350000000006050433000000000706004b000010ff0000613d000000000700001900000000082700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000010f80000413d000000000226001900000000000204350000000002320049000000200520008a00000000005304350000001f02200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000009510510009c000000e50000213d0000000102200190000000e50000c13d000000400010043f0000094c010000410000094c0240009c00000000020100190000000002044019000000400220021000000000030304330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b00002900000db30000c13d000004640000013d000000020210008c000012560000c13d0000000d01000029252a1e5e0000040f0000125a0000013d000000400700043d000009570a70009c000000e50000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000011330000413d000000000a070433000000000a0a004b0000015a0000613d000000f809900210000000000a080433000009580aa001970000000009a9019f0000095d099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000009500a000041000000000b82004b000000000b000019000000000b0a80190000095008800197000009500c200197000000000d8c004b000000000a00801900000000088c013f000009500880009c00000000080b001900000000080a6019000000000808004b000004640000c13d0000000d080000290000000002820019000000000424034f000000000804043b000009510480009c000004640000213d000000000489004900000020092000390000095002000041000000000a49004b000000000a000019000000000a0220190000095004400197000009500b900197000000000c4b004b000000000200801900000000044b013f000009500440009c00000000020ac019000000000202004b000004640000c13d000000400200043d0000002004200039000009600a0000410000000000a40435000000210a200039000000000b070433000000000c0b004b0000117b0000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b000011740000413d0000000007ab00190000000000070435000000000a030433000000000b0a004b000011880000613d000000000b000019000000000c7b0019000000200bb00039000000000d3b0019000000000d0d04330000000000dc0435000000000cab004b000011810000413d00000000037a001900000000000304350000000007060433000000000a07004b000011950000613d000000000a000019000000000b3a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b0000118e0000413d00000000033700190000001f0680018f000000000003043500000002079003670000000509800272000011a40000613d000000000a000019000000050ba00210000000000cb30019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b0000119c0000413d000000000a06004b000011b30000613d0000000509900210000000000797034f00000000099300190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000383001900000000000304350000000006050433000000000706004b000011c00000613d000000000700001900000000083700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000011b90000413d000000000336001900000000000304350000000003230049000000200530008a00000000005204350000001f03300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000009510510009c000000e50000213d0000000103300190000000e50000c13d000000400010043f0000094c010000410000094c0340009c00000000030100190000000003044019000000400330021000000000020204330000094c0420009c00000000020180190000006002200210000000000232019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b00002900000db30000c13d000004640000013d000000400200043d000b00000002001d000009570220009c000000e50000213d0000000b030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000011f20000413d0000000b030000290000000003030433000000000303004b0000015a0000613d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f0000000000120435000000a401b000390000000201100367000000000201043b000000800120008c0000127f0000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000012430000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000123b0000413d000000000500004b000012450000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000129c0000013d000000010110008c000012650000c13d0000000d01000029252a18170000040f000000400200043d00000020032000390000000c04000029000000000043043500000000001204350000094c010000410000094c0320009c0000000001024019000000400110021000000973011001c70000252b0001042e000000400200043d000d00000002001d000009530100004100000000001204350000000401200039252a180d0000040f0000000d0400002900000000014100490000094c020000410000094c0310009c00000000010280190000094c0340009c000000000204401900000040022002100000006001100210000000000121019f0000252c00010430000000000343001a0000094c044001970000030f0000413d0000000005000031000000000635004b0000030f0000413d000000000242034f000000000335004900000dea0000013d000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000012890000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000006402b000390000000202200367000000000302043b000000800230008c000013070000413d0000008002300270000009590430009c000000000203a019000009590430009c0000000004000019000000100400203900000008054001bf000009510620009c00000000040520190000004005200270000009510620009c000000000205201900000004054001bf0000094c0620009c000000000405201900000020052002700000094c0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000012d90000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000012d10000413d000000000600004b000012db0000613d0000000006020433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000013240000013d0000001f0430018f0000000502300272000012f70000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000012f00000413d000000000504004b000013050000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000252c00010430000000400200043d000009570420009c000000e50000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000013110000413d0000000005020433000000000505004b0000015a0000613d000000f8053002100000095006000041000000000303004b0000000003050019000000000306601900000000050404330000095805500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000013320000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b0000132b0000413d000000000134001900000000000104350000000003020433000000000403004b0000133f0000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000013380000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d000009510220009c000000e50000213d0000000101100190000000e50000c13d0000000901000029000000400010043f000009570110009c000000e50000213d00000000040b001900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f00000020025000390000095b0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000013b90000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000704000029000000000334043600000021042000390000000504400272000013a40000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000139c0000413d000000000400004b000013a60000613d00000007040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000070200002900000021022000390000000000120435000013d90000013d000000400200043d000700000002001d000009570220009c000000e50000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000013c50000413d00000007030000290000000003030433000000000303004b0000015a0000613d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f0000000000120435000000230100008a00000000020b00190000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000300000004001d00000000044300190000095005000041000000000641004b0000000006000019000000000605801900000950044001970000095007100197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004410019000000000142034f000000000101043b000009510510009c000004640000213d000000000513004900000020034000390000095004000041000000000653004b0000000006000019000000000604201900000950055001970000095007300197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d000000010410008c000014280000c13d000000000132034f000000000101043b000000010200008a0000095003000041000000000221004b000000000200001900000000020320190000095001100197000009500410009c00000000030080190000095001100167000009500110009c000000000102001900000000010360190000006002000039000600000002001d000000000101004b0000147b0000c13d000000400100043d000600000001001d000009570110009c000000e50000213d00000006030000290000004001300039000000400010043f00000020013000390000095a020000410000000000210435000000010100003900000000001304350000147b0000013d000000380210008c0000145e0000413d00000020021002700000094c0310009c000000000301001900000000030220190000094c0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000600000004001d000009570440009c000000e50000213d000000000232019f00000006040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000014460000413d00000006040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095c044001c700000000004304350000000302200210000000f80220008900000000012101cf0000000602000029000000210220003900000000001204350000147b0000013d000000400200043d000600000002001d000009570220009c000000e50000213d00000006030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a0000146a0000413d00000006030000290000000003030433000000000303004b0000015a0000613d000000f80110021000000000030204330000095803300197000000000113019f0000095001100167000000000012043500000000030000310000000301000029000000000513001900000000010b0019000001e4011000390000000202000367000000000412034f000000000404043b0000095006000041000000000754004b0000000007000019000000000706801900000950055001970000095008400197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000505004b000004640000c13d0000000d050000290000000004540019000000000542034f000000000505043b000009510650009c000004640000213d000000200650008c000004640000413d000000000553004900000020034000390000095004000041000000000653004b0000000006000019000000000604201900000950055001970000095007300197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d000000000232034f000000000202043b000000800320008c000014fb0000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000500000005001d000000000554004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f00000002043000390000000505000029000000000445043600000021053000390000000505500272000014e60000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000014de0000413d000000000500004b000014e80000613d00000005050000290000000005050433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000000503000029000000210330003900000000002304350000151b0000013d000000400300043d000500000003001d000009570330009c000000e50000213d00000005040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000015070000413d00000005040000290000000004040433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000003000031000000030200002900000000052300190000000202000367000000000412034f000000000404043b0000095006000041000000000754004b0000000007000019000000000706801900000950055001970000095008400197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000505004b000004640000c13d0000000d050000290000000004540019000000000542034f000000000505043b000009510650009c000004640000213d000000400650008c000004640000413d000000000353004900000020054000390000095006000041000000000735004b0000000007000019000000000706201900000950033001970000095005500197000000000835004b0000000006008019000000000335013f000009500330009c00000000030700190000000003066019000000000303004b000004640000c13d0000004003400039000000000232034f000000000202043b000000800320008c0000159b0000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000400000005001d000000000554004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f00000002043000390000000405000029000000000445043600000021053000390000000505500272000015860000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000157e0000413d000000000500004b000015880000613d00000004050000290000000005050433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000040300002900000021033000390000000000230435000015bb0000013d000000400300043d000400000003001d000009570330009c000000e50000213d00000004040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000015a70000413d00000004040000290000000004040433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000003000031000000030200002900000000042300190000000202000367000000000112034f000000000101043b0000095005000041000000000641004b0000000006000019000000000605801900000950044001970000095007100197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000001410019000000000412034f000000000404043b000009510540009c000004640000213d000000000343004900000020051000390000095006000041000000000735004b0000000007000019000000000706201900000950033001970000095005500197000000000835004b0000000006008019000000000335013f000009500330009c00000000030700190000000003066019000000000303004b000004640000c13d000000410340008c0000015a0000413d0000006001100039000000000112034f000000000101043b000000f801100270000100000001001d0000001b0110008a000000020110008c0000165d0000813d0000014401b00039000000000112034f000000000101043b000000000101004b0000166f0000613d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000102200190000004640000613d000000000201043b0000000101200210000000000302004b0000160a0000613d000000090300008a000000000331004b0000030f0000213d00000000322100d9000000020220008c0000030f0000c13d000000010300002900000000011300190000000802100039000000000132004b0000030f0000413d000000800120008c000100000002001d0000166f0000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c00000000010000190000000101002039000000000313001900000041013000390000000804000029000000000441016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000164a0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000016420000413d000000000500004b0000164c0000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000168c0000013d000000400100043d00000044021000390000096e03000041000000000032043500000024021000390000000f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000400100043d000009570210009c000000e50000213d0000004002100039000000400020043f0000000102000039000000000221043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000016790000413d0000000003010433000000000303004b0000015a0000613d0000000105000029000000f8035002100000095004000041000000000505004b000000000304601900000000040204330000095804400197000000000334019f000000000032043500000000020000310000000303000029000000000332001900000002080003670000000204000029000000000448034f000000000904043b0000095004000041000000000539004b0000000005000019000000000504801900000950033001970000095006900197000000000736004b0000000004008019000000000336013f000009500330009c00000000030500190000000003046019000000000303004b000004640000c13d0000000b0300002900000000030304330000000a0400002900000000040404330000000905000029000000000505043300000007060000290000000006060433000000060700002900000000070704330000000d0a0000290000000009a90019000000000898034f000000000808043b000009510a80009c000004640000213d00000000028200490000002009900039000009500a000041000000000b29004b000000000b000019000000000b0a201900000950022001970000095009900197000000000c29004b000000000a008019000000000229013f000009500220009c00000000020b001900000000020a6019000000000202004b000004640000c13d00000000023400190000000002520019000000000262001900000000027200190000000002820019000000050300002900000000030304330000000002320019000000040300002900000000030304330000000002320019000000000301043300000000023200190000095102200197000000380320008c000017010000413d00000020032002700000094c0420009c000000000402001900000000040320190000094c0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009570650009c000000e50000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a000016eb0000413d0000000006050433000000000606004b0000015a0000613d00000000060404330000095806600197000000f807300210000000000667019f0000095e066001c700000000006404350000000303300210000000f80330008900000000023201cf000000210350003900000000002304350000171b0000013d000000400500043d000009570350009c000000e50000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a0000170b0000413d0000000004050433000000000404004b0000015a0000613d000000f80220021000000000040304330000095804400197000000000242019f0000095d02200041000000000023043500000000020000310000000303000029000000000632001900000002030003670000000204000029000000000443034f000000000404043b0000095007000041000000000864004b0000000008000019000000000807801900000950066001970000095009400197000000000a69004b0000000007008019000000000669013f000009500660009c00000000060800190000000006076019000000000606004b000004640000c13d0000000d060000290000000006640019000000000363034f000000000403043b000009510340009c000004640000213d000000000242004900000020066000390000095003000041000000000726004b0000000007000019000000000703201900000950022001970000095008600197000000000928004b0000000003008019000000000228013f000009500220009c00000000020700190000000002036019000000000202004b000004640000c13d000000400200043d00000020032000390000000007050433000000000807004b000017530000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b0000174c0000413d000000000537001900000000000504350000000b070000290000000007070433000000000807004b000017620000613d0000000008000019000000000958001900000020088000390000000b0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000175a0000413d000000000557001900000000000504350000000a070000290000000007070433000000000807004b000017710000613d0000000008000019000000000958001900000020088000390000000a0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017690000413d0000000005570019000000000005043500000009070000290000000007070433000000000807004b000017800000613d000000000800001900000000095800190000002008800039000000090a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017780000413d0000000005570019000000000005043500000007070000290000000007070433000000000807004b0000178f0000613d000000000800001900000000095800190000002008800039000000070a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017870000413d0000000005570019000000000005043500000006070000290000000007070433000000000807004b0000179e0000613d000000000800001900000000095800190000002008800039000000060a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017960000413d00000000055700190000001f0740018f000000000005043500000002066003670000000508400272000017ad0000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b000017a50000413d000000000907004b000017bc0000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b000017c90000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b000017c20000413d0000000001450019000000000001043500000005040000290000000004040433000000000504004b000017d80000613d0000000005000019000000000615001900000020055000390000000507000029000000000775001900000000070704330000000000760435000000000645004b000017d00000413d0000000001140019000000000001043500000004040000290000000004040433000000000504004b000017e70000613d0000000005000019000000000615001900000020055000390000000407000029000000000775001900000000070704330000000000760435000000000645004b000017df0000413d000000000114001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f0000094c010000410000094c0430009c0000000003018019000000400330021000000000020204330000094c0420009c00000000020180190000006002200210000000000232019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000101043b0000125a0000013d000000400210003900000975030000410000000000320435000000200210003900000013030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0006000000000002000400000001001d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f000000010220019000001e3e0000613d000000000201043b000000800120008c000018730000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c00001e400000213d000000010550019000001e400000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000018600000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000018580000413d000000000500004b000018620000613d0000000005010433000000000505004b00001e460000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000018900000013d000000400100043d000009570310009c00001e400000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000187d0000413d0000000004010433000000000404004b00001e460000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c000018e10000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000009510750009c00001e400000213d000000010660019000001e400000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000018ce0000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000018c60000413d000000000600004b000018d00000613d0000000006030433000000000606004b00001e460000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000018fe0000013d000000400300043d000009570430009c00001e400000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000018eb0000413d0000000005030433000000000505004b00001e460000613d000000f8052002100000095006000041000000000202004b0000000002050019000000000206601900000000050404330000095805500197000000000225019f00000000002404350000000402000029000000a0022000390000000202200367000000000202043b000000800420008c0000194f0000413d0000008004200270000009590520009c000000000402a019000009590520009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c00001e400000213d000000010770019000001e400000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000193c0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000019340000413d000000000700004b0000193e0000613d0000000007040433000000000707004b00001e460000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000196c0000013d000000400400043d000009570540009c00001e400000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a000019590000413d0000000006040433000000000606004b00001e460000613d000000f8062002100000095007000041000000000202004b0000000002060019000000000207601900000000060504330000095806600197000000000226019f0000000000250435000000040200002900000060022000390000000202200367000000000202043b000000800520008c000019bd0000413d0000008005200270000009590620009c000000000502a019000009590620009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c00001e400000213d000000010880019000001e400000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000019aa0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000019a20000413d000000000800004b000019ac0000613d0000000008050433000000000808004b00001e460000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000019da0000013d000000400500043d000009570650009c00001e400000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000019c70000413d0000000007050433000000000707004b00001e460000613d000000f8072002100000095008000041000000000202004b0000000002070019000000000208601900000000070604330000095807700197000000000227019f0000000000260435000000400600043d000009570260009c00001e400000213d000000040900002900000040029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000095b0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000120029000390000000202200367000000000202043b000000800720008c00001a3b0000413d0000008007200270000009590820009c000000000702a019000009590820009c0000000008000019000000100800203900000008098001bf000009510a70009c00000000080920190000004009700270000009510a70009c000000000709201900000004098001bf0000094c0a70009c000000000809201900000020097002700000094c0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000009510b90009c00001e400000213d000000010aa0019000001e400000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200001a280000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00001a200000413d000000000a00004b00001a2a0000613d000000000a070433000000000a0a004b00001e460000613d000000000a090433000009580aa00197000000f80b800210000000000aab019f0000095a0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500001a580000013d000000400700043d000009570870009c00001e400000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00001a450000413d0000000009070433000000000909004b00001e460000613d000000f809200210000009500a000041000000000202004b000000000209001900000000020a601900000000090804330000095809900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b00001a650000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b00001a5e0000413d000000000189001900000000000104350000000008030433000000000908004b00001a720000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b00001a6b0000413d000000000118001900000000000104350000000003040433000000000803004b00001a7f0000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b00001a780000413d000000000113001900000000000104350000000003050433000000000403004b00001a8c0000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b00001a850000413d000000000113001900000000000104350000000003060433000000000403004b00001a990000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b00001a920000413d000000000113001900000000000104350000000003070433000000000403004b00001aa60000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b00001a9f0000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b00000000010000190000000101004039000009510350009c00001e400000213d000000010110019000001e400000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000095009000041000000000a16004b000000000a000019000000000a0980190000095001100197000009500b600197000000000c1b004b000000000900801900000000011b013f000009500110009c00000000010a00190000000001096019000000000101004b00001e3e0000c13d00000004010000290000000001160019000000000617034f000000000606043b000009510960009c00001e3e0000213d000000000968004900000020081000390000095001000041000000000a98004b000000000a000019000000000a0120190000095009900197000009500b800197000000000c9b004b000000000100801900000000099b013f000009500990009c00000000010ac019000000000101004b00001e3e0000c13d000000010160008c00001b030000c13d000000000187034f000000000101043b000000010300008a0000095006000041000000000331004b000000000300001900000000030620190000095001100197000009500710009c00000000060080190000095001100167000009500110009c000000000103001900000000010660190000006006000039000000000101004b00001b4f0000c13d000009570150009c00001e400000213d0000004001500039000000400010043f00000020015000390000095a03000041000000000031043500000001010000390000000000150435000000000605001900001b4f0000013d000000380160008c00001b350000413d00000020016002700000094c0360009c000000000306001900000000030120190000094c0160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009570350009c00001e400000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a00001b1e0000413d0000000001050433000000000101004b00001e460000613d00000000010804330000095801100197000000f803700210000000000113019f0000095c011001c700000000001804350000000301700210000000f80110008900000000011601cf00000021035000390000000000130435000000000605001900001b4f0000013d000009570150009c00001e400000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a00001b3e0000413d0000000001050433000000000101004b00001e460000613d000000f80160021000000000030704330000095803300197000000000113019f000009500110016700000000001704350000000006050019000000400500043d000009570150009c00001e400000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a00001b5a0000413d0000000001050433000000000101004b00001e460000613d000000000107043300000958011001970000095d011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b000009500c000041000000000d1b004b000000000d000019000000000d0c80190000095001100197000009500eb00197000000000f1e004b000000000c00801900000000011e013f000009500110009c00000000010d001900000000010c6019000000000101004b00001e3e0000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b000009510cb0009c00001e3e0000213d000000000cb8004900000020081000390000095001000041000000000dc8004b000000000d000019000000000d012019000009500cc00197000009500e800197000000000fce004b0000000001008019000000000cce013f000009500cc0009c00000000010dc019000000000101004b00001e3e0000c13d0000002001b0008c00001e3e0000413d000000000187034f000000000801043b000000800180008c00001be40000413d0000008001800270000009590780009c000000000108a019000009590780009c00000000070000190000001007002039000000080b7001bf000009510c10009c00000000070b2019000000400b100270000009510c10009c00000000010b2019000000040b7001bf0000094c0c10009c00000000070b2019000000200b1002700000094c0c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c004039000009510d10009c00001e400000213d000000010cc0019000001e400000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d10027200001bd00000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b00001bc80000413d000000000100004b00001bd20000613d0000000001070433000000000101004b00001e460000613d00000000010c04330000095801100197000000f803b00210000000000113019f0000095a0110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c000000000103001900000000010020190000002103700039000000000013043500001c000000013d000000400700043d000009570170009c00001e400000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a00001bee0000413d0000000001070433000000000101004b00001e460000613d000000f8018002100000095003000041000000000808004b000000000103601900000000030b04330000095803300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000095003000041000000000d1b004b000000000d000019000000000d0380190000095001100197000009500eb00197000000000f1e004b000000000300801900000000011e013f000009500110009c00000000010d00190000000001036019000000000101004b00001e3e0000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000095101d0009c00001e3e0000213d0000000001dc00490000002003b00039000009500c000041000000000e13004b000000000e000019000000000e0c201900000950011001970000095003300197000000000f13004b000000000c008019000000000113013f000009500110009c00000000010e001900000000010c6019000000000101004b00001e3e0000c13d0000004001d0008c00001e3e0000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c00001c7c0000413d0000008001b002700000095903b0009c00000000010ba0190000095903b0009c0000000003000019000000100300203900000008083001bf000009510c10009c00000000030820190000004008100270000009510c10009c000000000108201900000004083001bf0000094c0c10009c000000000308201900000020081002700000094c0c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d004039000009510310009c00001e400000213d0000000103d0019000001e400000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e10027200001c680000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b00001c600000413d000000000100004b00001c6a0000613d0000000001080433000000000101004b00001e460000613d00000000010d04330000095801100197000000f803c00210000000000113019f0000095a0110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c000000000103001900000000010020190000002103800039000000000013043500001c980000013d000000400800043d000009570180009c00001e400000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a00001c860000413d0000000001080433000000000101004b00001e460000613d000000f801b00210000009500300004100000000090b004b000000000103601900000000030c04330000095803300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b000009500300004100000000091a004b000000000900001900000000090380190000095001100197000009500da00197000000000e1d004b000000000300801900000000011d013f000009500110009c00000000010900190000000001036019000000000101004b00001e3e0000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000095101d0009c00001e3e0000213d0000000001dc00490000002003a000390000095009000041000000000c13004b000000000c000019000000000c09201900000950011001970000095003300197000000000e13004b0000000009008019000000000113013f000009500110009c00000000010c00190000000001096019000000000101004b00001e3e0000c13d0000004101d0008c00001e460000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c9000009500c000041000000000101043b000000f8011002700000001b0310008c00001cd30000613d000000000b000415000000050bb0008a000000200bb000c90000095f0c0000410000001c0110008c00001e4c0000c13d000000400a00043d0000095701a0009c00001e400000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a00001cdd0000413d00000000010a0433000000000101004b00001e460000613d00000000010d043300000958011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b000009500300004100000000091f004b000000000900001900000000090380190000095001100197000009500cf00197000000000d1c004b000000000300801900000000011c013f000009500110009c00000000010900190000000001036019000000000101004b00001e3e0000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000095103e0009c00001e3e0000213d0000000003eb004900000020011000390000095009000041000000000b31004b000000000b000019000000000b09201900000950033001970000095001100197000000000f31004b0000000009008019000000000131013f000009500110009c00000000010b00190000000001096019000000000101004b00001e3e0000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a04330000000001310019000009510c1001970000003801c0008c00001d560000413d0000002001c002700000094c03c0009c00000000030c001900000000030120190000094c01c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095703b0009c00001e400000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a00001d400000413d00000000010b0433000000000101004b00001e460000613d00000000010d04330000095801100197000000f803900210000000000113019f0000095e011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b00039000000000013043500001d700000013d000000400b00043d0000095701b0009c00001e400000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a00001d600000413d00000000010b0433000000000101004b00001e460000613d000000f801c0021000000000030904330000095803300197000000000131019f0000095d011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000095009000041000000000d13004b000000000d000019000000000d0980190000095001100197000009500e300197000000000f1e004b000000000900801900000000011e013f000009500110009c00000000010d00190000000001096019000000000101004b00001e3e0000c13d00000004010000290000000001130019000000000314034f000000000903043b000009510390009c00001e3e0000213d00000000039c0049000000200c100039000009500100004100000000043c004b000000000400001900000000040120190000095003300197000009500dc00197000000000e3d004b000000000100801900000000033d013f000009500330009c000000000104c019000000000101004b00001e3e0000c13d000000400300043d00000020043000390000095f01000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b00001daa0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b00001da30000413d000000000bde001900000000000b0435000000000d02043300000000010d004b00001db70000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b00001db00000413d0000000002bd00190000000000020435000000000b06043300000000010b004b00001dc40000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b00001dbd0000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c90027200001dd30000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b00001dcb0000413d000000000106004b00001de20000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b00001def0000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b00001de80000413d0000000002260019000000000002043500000000050a0433000000000105004b00001dfc0000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b00001df50000413d000000000225001900000000000204350000000005070433000000000105004b00001e090000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b00001e020000413d000000000225001900000000000204350000000005080433000000000105004b00001e160000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b00001e0f0000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b00000000020000190000000102004039000009510410009c00001e400000213d000000010220019000001e400000c13d000000400010043f0000094c0100004100000004040000290000094c0240009c00000000020100190000000002044019000000400220021000000000030304330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f000000010220019000001e3e0000613d000000000101043b000000000001042d00000000010000190000252c000104300000096f0100004100000000001004350000004101000039000000040010043f00000970010000410000252c000104300000096f0100004100000000001004350000003201000039000000040010043f00000970010000410000252c00010430000000400100043d00000044021000390000096e03000041000000000032043500000024021000390000000f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c000104300006000000000002000400000001001d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000102200190000025000000613d000000000201043b000000800120008c00001eba0000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000025020000213d0000000105500190000025020000c13d000000400040043f000000020430003900000000044104360000002105300039000000050550027200001ea70000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00001e9f0000413d000000000500004b00001ea90000613d0000000005010433000000000505004b000025080000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000002103100039000000000023043500001ed70000013d000000400100043d000009570310009c000025020000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00001ec40000413d0000000004010433000000000404004b000025080000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c00001f280000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000009510750009c000025020000213d0000000106600190000025020000c13d000000400050043f000000020540003900000000055304360000002106400039000000050660027200001f150000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b00001f0d0000413d000000000600004b00001f170000613d0000000006030433000000000606004b000025080000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c00000000020020190000002104300039000000000024043500001f450000013d000000400300043d000009570430009c000025020000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a00001f320000413d0000000005030433000000000505004b000025080000613d000000f8052002100000095006000041000000000202004b0000000002050019000000000206601900000000050404330000095805500197000000000225019f00000000002404350000000402000029000000c0022000390000000202200367000000000202043b000000800420008c00001f960000413d0000008004200270000009590520009c000000000402a019000009590520009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c000025020000213d0000000107700190000025020000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200001f830000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00001f7b0000413d000000000700004b00001f850000613d0000000007040433000000000707004b000025080000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500001fb30000013d000000400400043d000009570540009c000025020000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00001fa00000413d0000000006040433000000000606004b000025080000613d000000f8062002100000095007000041000000000202004b0000000002060019000000000207601900000000060504330000095806600197000000000226019f00000000002504350000000402000029000000a0022000390000000202200367000000000202043b000000800520008c000020040000413d0000008005200270000009590620009c000000000502a019000009590620009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c000025020000213d0000000108800190000025020000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200001ff10000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00001fe90000413d000000000800004b00001ff30000613d0000000008050433000000000808004b000025080000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000020210000013d000000400500043d000009570650009c000025020000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a0000200e0000413d0000000007050433000000000707004b000025080000613d000000f8072002100000095008000041000000000202004b0000000002070019000000000208601900000000070604330000095807700197000000000227019f0000000000260435000000040200002900000060022000390000000202200367000000000202043b000000800620008c000020720000413d0000008006200270000009590720009c000000000602a019000009590720009c0000000007000019000000100700203900000008087001bf000009510960009c00000000070820190000004008600270000009510960009c000000000608201900000004087001bf0000094c0960009c000000000708201900000020086002700000094c0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000009510a80009c000025020000213d0000000109900190000025020000c13d000000400080043f00000002087000390000000008860436000000210970003900000005099002720000205f0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000020570000413d000000000900004b000020610000613d0000000009060433000000000909004b000025080000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095a0990004100000000009804350000000307700210000000f80770008900000000027201cf000000ff0770008c0000000002002019000000210760003900000000002704350000208f0000013d000000400600043d000009570760009c000025020000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a0000207c0000413d0000000008060433000000000808004b000025080000613d000000f8082002100000095009000041000000000202004b0000000002080019000000000209601900000000080704330000095808800197000000000228019f0000000000270435000000400700043d000009570270009c000025020000213d000000040a0000290000004002a000390000000202200367000000000202043b0000004008700039000000400080043f00000020087000390000095b090000410000000000980435000000150800003900000000008704350000002108700039000000600220021000000000002804350000012002a000390000000202200367000000000202043b000000800820008c000020f00000413d0000008008200270000009590920009c000000000802a019000009590920009c00000000090000190000001009002039000000080a9001bf000009510b80009c00000000090a2019000000400a800270000009510b80009c00000000080a2019000000040a9001bf0000094c0b80009c00000000090a2019000000200a8002700000094c0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000009510ca0009c000025020000213d000000010bb00190000025020000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000020dd0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b000020d50000413d000000000b00004b000020df0000613d000000000b080433000000000b0b004b000025080000613d000000000b0a0433000009580bb00197000000f80c900210000000000bbc019f0000095a0bb000410000000000ba04350000000309900210000000f80990008900000000029201cf000000ff0990008c0000000002002019000000210980003900000000002904350000210d0000013d000000400800043d000009570980009c000025020000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000020fa0000413d000000000a080433000000000a0a004b000025080000613d000000f80a200210000009500b000041000000000202004b00000000020a001900000000020b6019000000000a090433000009580aa0019700000000022a019f0000000000290435000000400200043d0000002009200039000000000a010433000000000b0a004b0000211a0000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b000021130000413d00000000019a001900000000000104350000000009030433000000000a09004b000021270000613d000000000a000019000000000b1a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b9a004b000021200000413d000000000119001900000000000104350000000003040433000000000903004b000021340000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b0000212d0000413d000000000113001900000000000104350000000003050433000000000403004b000021410000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000934004b0000213a0000413d000000000113001900000000000104350000000003060433000000000403004b0000214e0000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000534004b000021470000413d000000000113001900000000000104350000000003070433000000000403004b0000215b0000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b000021540000413d000000000113001900000000000104350000000003080433000000000403004b000021680000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000534004b000021610000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b00000000010000190000000101004039000009510350009c000025020000213d0000000101100190000025020000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000095009000041000000000a16004b000000000a000019000000000a0980190000095001100197000009500b600197000000000c1b004b000000000900801900000000011b013f000009500110009c00000000010a00190000000001096019000000000101004b000025000000c13d00000004010000290000000001160019000000000617034f000000000606043b000009510960009c000025000000213d000000000968004900000020081000390000095001000041000000000a98004b000000000a000019000000000a0120190000095009900197000009500b800197000000000c9b004b000000000100801900000000099b013f000009500990009c00000000010ac019000000000101004b000025000000c13d000000010160008c000021c50000c13d000000000187034f000000000101043b000000010300008a0000095006000041000000000331004b000000000300001900000000030620190000095001100197000009500710009c00000000060080190000095001100167000009500110009c000000000103001900000000010660190000006006000039000000000101004b000022110000c13d000009570150009c000025020000213d0000004001500039000000400010043f00000020015000390000095a030000410000000000310435000000010100003900000000001504350000000006050019000022110000013d000000380160008c000021f70000413d00000020016002700000094c0360009c000000000306001900000000030120190000094c0160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009570350009c000025020000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a000021e00000413d0000000001050433000000000101004b000025080000613d00000000010804330000095801100197000000f803700210000000000113019f0000095c011001c700000000001804350000000301700210000000f80110008900000000011601cf000000210350003900000000001304350000000006050019000022110000013d000009570150009c000025020000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a000022000000413d0000000001050433000000000101004b000025080000613d000000f80160021000000000030704330000095803300197000000000113019f000009500110016700000000001704350000000006050019000000400500043d000009570150009c000025020000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a0000221c0000413d0000000001050433000000000101004b000025080000613d000000000107043300000958011001970000095d011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b000009500c000041000000000d1b004b000000000d000019000000000d0c80190000095001100197000009500eb00197000000000f1e004b000000000c00801900000000011e013f000009500110009c00000000010d001900000000010c6019000000000101004b000025000000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b000009510cb0009c000025000000213d000000000cb8004900000020081000390000095001000041000000000dc8004b000000000d000019000000000d012019000009500cc00197000009500e800197000000000fce004b0000000001008019000000000cce013f000009500cc0009c00000000010dc019000000000101004b000025000000c13d0000002001b0008c000025000000413d000000000187034f000000000801043b000000800180008c000022a60000413d0000008001800270000009590780009c000000000108a019000009590780009c00000000070000190000001007002039000000080b7001bf000009510c10009c00000000070b2019000000400b100270000009510c10009c00000000010b2019000000040b7001bf0000094c0c10009c00000000070b2019000000200b1002700000094c0c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c004039000009510d10009c000025020000213d000000010cc00190000025020000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d100272000022920000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b0000228a0000413d000000000100004b000022940000613d0000000001070433000000000101004b000025080000613d00000000010c04330000095801100197000000f803b00210000000000113019f0000095a0110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c0000000001030019000000000100201900000021037000390000000000130435000022c20000013d000000400700043d000009570170009c000025020000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a000022b00000413d0000000001070433000000000101004b000025080000613d000000f8018002100000095003000041000000000808004b000000000103601900000000030b04330000095803300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000095003000041000000000d1b004b000000000d000019000000000d0380190000095001100197000009500eb00197000000000f1e004b000000000300801900000000011e013f000009500110009c00000000010d00190000000001036019000000000101004b000025000000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000095101d0009c000025000000213d0000000001dc00490000002003b00039000009500c000041000000000e13004b000000000e000019000000000e0c201900000950011001970000095003300197000000000f13004b000000000c008019000000000113013f000009500110009c00000000010e001900000000010c6019000000000101004b000025000000c13d0000004001d0008c000025000000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c0000233e0000413d0000008001b002700000095903b0009c00000000010ba0190000095903b0009c0000000003000019000000100300203900000008083001bf000009510c10009c00000000030820190000004008100270000009510c10009c000000000108201900000004083001bf0000094c0c10009c000000000308201900000020081002700000094c0c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d004039000009510310009c000025020000213d0000000103d00190000025020000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e1002720000232a0000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b000023220000413d000000000100004b0000232c0000613d0000000001080433000000000101004b000025080000613d00000000010d04330000095801100197000000f803c00210000000000113019f0000095a0110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c00000000010300190000000001002019000000210380003900000000001304350000235a0000013d000000400800043d000009570180009c000025020000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a000023480000413d0000000001080433000000000101004b000025080000613d000000f801b00210000009500300004100000000090b004b000000000103601900000000030c04330000095803300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b000009500300004100000000091a004b000000000900001900000000090380190000095001100197000009500da00197000000000e1d004b000000000300801900000000011d013f000009500110009c00000000010900190000000001036019000000000101004b000025000000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000095101d0009c000025000000213d0000000001dc00490000002003a000390000095009000041000000000c13004b000000000c000019000000000c09201900000950011001970000095003300197000000000e13004b0000000009008019000000000113013f000009500110009c00000000010c00190000000001096019000000000101004b000025000000c13d0000004101d0008c000025080000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c9000009500c000041000000000101043b000000f8011002700000001b0310008c000023950000613d000000000b000415000000050bb0008a000000200bb000c90000095f0c0000410000001c0110008c0000250e0000c13d000000400a00043d0000095701a0009c000025020000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a0000239f0000413d00000000010a0433000000000101004b000025080000613d00000000010d043300000958011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b000009500300004100000000091f004b000000000900001900000000090380190000095001100197000009500cf00197000000000d1c004b000000000300801900000000011c013f000009500110009c00000000010900190000000001036019000000000101004b000025000000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000095103e0009c000025000000213d0000000003eb004900000020011000390000095009000041000000000b31004b000000000b000019000000000b09201900000950033001970000095001100197000000000f31004b0000000009008019000000000131013f000009500110009c00000000010b00190000000001096019000000000101004b000025000000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a04330000000001310019000009510c1001970000003801c0008c000024180000413d0000002001c002700000094c03c0009c00000000030c001900000000030120190000094c01c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095703b0009c000025020000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a000024020000413d00000000010b0433000000000101004b000025080000613d00000000010d04330000095801100197000000f803900210000000000113019f0000095e011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b000390000000000130435000024320000013d000000400b00043d0000095701b0009c000025020000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a000024220000413d00000000010b0433000000000101004b000025080000613d000000f801c0021000000000030904330000095803300197000000000131019f0000095d011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000095009000041000000000d13004b000000000d000019000000000d0980190000095001100197000009500e300197000000000f1e004b000000000900801900000000011e013f000009500110009c00000000010d00190000000001096019000000000101004b000025000000c13d00000004010000290000000001130019000000000314034f000000000903043b000009510390009c000025000000213d00000000039c0049000000200c100039000009500100004100000000043c004b000000000400001900000000040120190000095003300197000009500dc00197000000000e3d004b000000000100801900000000033d013f000009500330009c000000000104c019000000000101004b000025000000c13d000000400300043d00000020043000390000096001000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b0000246c0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b000024650000413d000000000bde001900000000000b0435000000000d02043300000000010d004b000024790000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b000024720000413d0000000002bd00190000000000020435000000000b06043300000000010b004b000024860000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b0000247f0000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c900272000024950000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b0000248d0000413d000000000106004b000024a40000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b000024b10000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b000024aa0000413d0000000002260019000000000002043500000000050a0433000000000105004b000024be0000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b000024b70000413d000000000225001900000000000204350000000005070433000000000105004b000024cb0000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b000024c40000413d000000000225001900000000000204350000000005080433000000000105004b000024d80000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b000024d10000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b00000000020000190000000102004039000009510410009c000025020000213d0000000102200190000025020000c13d000000400010043f0000094c0100004100000004040000290000094c0240009c00000000020100190000000002044019000000400220021000000000030304330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f0000000102200190000025000000613d000000000101043b000000000001042d00000000010000190000252c000104300000096f0100004100000000001004350000004101000039000000040010043f00000970010000410000252c000104300000096f0100004100000000001004350000003201000039000000040010043f00000970010000410000252c00010430000000400100043d00000044021000390000096e03000041000000000032043500000024021000390000000f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c0001043000002523002104230000000102000039000000000001042d0000000002000019000000000001042d00002528002104230000000102000039000000000001042d0000000002000019000000000001042d0000252a000004320000252b0001042e0000252c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000ebe4a3d7000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff456e636f64696e6720756e737570706f7274656420747800000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f1901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f8080000000000000000000000000000000000000000000000000000000000000496e76616c696420762076616c756500000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000000000400000000000000000000000004f766572666c6f77000000000000000000000000000000000000000000000000556e737570706f72746564207478207479706500000000000000000000000000ff4bcc7073c02d04d7aa092c8313464e6dd8157d2b32630ed88836adf7358aaf", - "deployedBytecode": "0x0004000000000002000d000000000002000000000301001900000060033002700000094c04300197000300000041035500020000000103550000094c0030019d000100000000001f000000800a0000390000004000a0043f0000000101200190000000910000c13d0000000001000031000000040110008c000004640000413d0000000201000367000000000101043b0000094e011001970000094f0110009c000004640000c13d0000000001000416000000000101004b000004640000c13d0000000001000031000000040310008a0000095002000041000000200430008c000000000400001900000000040240190000095005300197000000000605004b000000000200a019000009500550009c000000000204c019000000000202004b000004640000c13d00000002020003670000000404200370000000000904043b000009510490009c000004640000213d00000000039300490000095004000041000002600530008c000000000500001900000000050440190000095003300197000000000603004b000000000400a019000009500330009c00000000030500190000000003046019000000000303004b000004640000c13d0000000403900039000d00000003001d000000000332034f000000000303043b000000000403004b000000990000c13d000c00000009001d0000010401900039000000000112034f000000000101043b000000800210008c000000e10000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000b090000290000000003390436000000210420003900000005044002720000007d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000750000413d000000000400004b0000007f0000613d0000000004090433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000001c60000013d0000000001000416000000000101004b000004640000c13d0000002001000039000001000010044300000120000004430000094d010000410000252b0001042e000000710430008c000000eb0000c13d000001c403900039000000000332034f000000230400008a0000000004940049000b00000004001d0000000004140019000000000303043b0000095005000041000000000643004b0000000006000019000000000605801900000950044001970000095007300197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004430019000000000242034f000000000302043b000009510230009c000004640000213d000000000131004900000020044000390000095002000041000000000514004b0000000005000019000000000502201900000950011001970000095006400197000000000716004b0000000002008019000000000116013f000009500110009c00000000010500190000000001026019000000000101004b000004640000c13d00000000010004140000000202000367000000000503004b000003050000c13d0000000003000031000a0000000a001d000c00000009001d0000094c0410009c000004350000a13d000000400100043d000000440210003900000974030000410000000000320435000000240210003900000008030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000400200043d000b00000002001d000009570220009c000001480000a13d0000096f0100004100000000001004350000004101000039000000040010043f00000970010000410000252c00010430000000020130008c000001600000c13d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039000c00000009001d252a25200000040f0000000102200190000004640000613d000000000201043b000000800120008c000002970000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001350000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000012d0000413d000000000500004b000001370000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000002b40000013d0000000b070000290000004002700039000000400020043f0000000102000039000000000227043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000001500000413d0000000003070433000000000303004b000001bd0000c13d0000096f0100004100000000001004350000003201000039000000040010043f00000970010000410000252c00010430000000010130008c000002170000c13d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039000c00000009001d252a25200000040f0000000102200190000004640000613d000000000201043b000000800120008c000003150000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001aa0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001a20000413d000000000500004b000001ac0000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000003320000013d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f00000000001204350000000c01000029000000a4011000390000000201100367000000000201043b000000800120008c000002290000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000002040000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001fc0000413d000000000500004b000002060000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000002460000013d000000400100043d000000440210003900000952030000410000000000320435000000240210003900000017030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002330000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000c0200002900000064022000390000000202200367000000000302043b000000800230008c000003830000413d0000008002300270000009590430009c000000000203a019000009590430009c0000000004000019000000100400203900000008054001bf000009510620009c00000000040520190000004005200270000009510620009c000000000205201900000004054001bf0000094c0620009c000000000405201900000020052002700000094c0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000002840000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000027c0000413d000000000600004b000002860000613d0000000006020433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000003a00000013d000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002a10000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000302043b000000800230008c000004660000413d0000008002300270000009590430009c000000000203a019000009590430009c0000000004000019000000100400203900000008054001bf000009510620009c00000000040520190000004005200270000009510620009c000000000205201900000004054001bf0000094c0620009c000000000405201900000020052002700000094c0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000002f20000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000002ea0000413d000000000600004b000002f40000613d0000000006020433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000004830000013d0000094c054001970000000004430019000000000334004b0000000003000019000000010300403900000001033001900000030f0000c13d0000000003000031000000000643004b000004ef0000813d0000096f0100004100000000001004350000001101000039000000040010043f00000970010000410000252c00010430000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000031f0000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000202043b000000800320008c000004f20000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000003700000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000003680000413d000000000600004b000003720000613d0000000006030433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c0000000002002019000000210430003900000000002404350000050f0000013d000000400200043d000009570420009c000000e50000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a0000038d0000413d0000000005020433000000000505004b0000015a0000613d000000f8053002100000095006000041000000000303004b0000000003050019000000000306601900000000050404330000095805500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000003ae0000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b000003a70000413d000000000134001900000000000104350000000003020433000000000403004b000003bb0000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000003b40000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d000009510220009c000000e50000213d0000000101100190000000e50000c13d0000000901000029000000400010043f000009570110009c000000e50000213d0000000c0400002900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f00000020025000390000095b0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000006ed0000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000704000029000000000334043600000021042000390000000504400272000004200000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004180000413d000000000400004b000004220000613d00000007040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000702000029000000210220003900000000001204350000070d0000013d0000094c0330019700000000023203df000000c001100210000009610110019700000962011001c700000000011203af0000801002000039252a25250000040f000000000301001900000060033002700001094c0030019d0000094c0330019700030000000103550000000102200190000004d40000613d0000003f013000390000096301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f00000000013204360000001f0430003900000005044002720000045f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004570000413d000000000400004b000004610000613d0000000104000031000000000443004b000005ce0000a13d00000000010000190000252c00010430000000400200043d000009570420009c000000e50000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000004700000413d0000000005020433000000000505004b0000015a0000613d000000f8053002100000095006000041000000000303004b0000000003050019000000000306601900000000050404330000095805500197000000000335019f00000000003404350000000c03000029000000c4033000390000000203300367000000000303043b000000800430008c000005600000413d0000008004300270000009590530009c000000000403a019000009590530009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c000000e50000213d0000000107700190000000e50000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000004c10000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000004b90000413d000000000700004b000004c30000613d0000000007040433000000000707004b0000015a0000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c0000000003002019000000210540003900000000003504350000057d0000013d0000001f0430018f0000000502300272000004df0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000004d80000413d000000000504004b000004ed0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000252c00010430000000000252034f0000000003430049000000cb0000013d000000400300043d000009570430009c000000e50000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000004fc0000413d0000000005030433000000000505004b0000015a0000613d000000f8052002100000095006000041000000000202004b0000000002050019000000000206601900000000050404330000095805500197000000000225019f00000000002404350000000c02000029000000a4022000390000000202200367000000000202043b000000800420008c0000067f0000413d0000008004200270000009590520009c000000000402a019000009590520009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c000000e50000213d0000000107700190000000e50000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000054d0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000005450000413d000000000700004b0000054f0000613d0000000007040433000000000707004b0000015a0000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000069c0000013d000000400400043d000009570540009c000000e50000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000056a0000413d0000000006040433000000000606004b0000015a0000613d000000f8063002100000095007000041000000000303004b0000000003060019000000000307601900000000060504330000095806600197000000000336019f00000000003504350000000c03000029000000a4033000390000000203300367000000000303043b000000800530008c0000075c0000413d0000008005300270000009590630009c000000000503a019000009590630009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c000000e50000213d0000000108800190000000e50000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000005bb0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000005b30000413d000000000800004b000005bd0000613d0000000008050433000000000808004b0000015a0000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c000000000300201900000021065000390000000000360435000007790000013d00000003050003670000001f0430018f0000000503300272000005db0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000005d30000413d000000000604004b000005ea0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e5c0000c13d00000000040000310000000b0200002900000000052400190000000c0200002900000204032000390000000202000367000000000332034f000000000303043b0000095006000041000000000753004b0000000007000019000000000706801900000950055001970000095008300197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000505004b000004640000c13d0000000001010433000900000001001d0000000d010000290000000001130019000000000312034f000000000503043b000009510350009c000004640000213d0000000503500210000000000434004900000020061000390000095001000041000000000746004b0000000007000019000000000701201900000950044001970000095008600197000000000948004b0000000001008019000000000448013f000009500440009c000000000107c019000000000101004b000004640000c13d000000400100043d00000020041000390000096405500198000006290000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000006210000413d000000000200004b0000062b0000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000009510520009c000000e50000213d0000000103300190000000e50000c13d000000400020043f0000094c020000410000094c0340009c00000000030200190000000003044019000000400330021000000000010104330000094c0410009c00000000010280190000006001100210000000000131019f00000000030004140000094c0430009c0000000002034019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c03000029000004640000613d00000000020000310000000b04000029000000000542001900000224043000390000000203000367000000000443034f000000000404043b0000095006000041000000000754004b0000000007000019000000000706801900000950055001970000095008400197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000101043b000b00000001001d000000000105004b000004640000c13d0000000d010000290000000001140019000000000313034f000000000303043b000009510430009c000004640000213d000000000232004900000020041000390000095001000041000000000524004b0000000005000019000000000501201900000950022001970000095006400197000000000726004b0000000001008019000000000226013f000009500220009c000000000105c019000000000101004b000004640000c13d00000000010004140000000202000367000000000503004b00000bbd0000c13d000000000300003100000bc50000013d000000400400043d000009570540009c000000e50000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a000006890000413d0000000006040433000000000606004b0000015a0000613d000000f8062002100000095007000041000000000202004b0000000002060019000000000207601900000000060504330000095806600197000000000226019f00000000002504350000000c0200002900000064022000390000000202200367000000000202043b000000800520008c000007ca0000413d0000008005200270000009590620009c000000000502a019000009590620009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c000000e50000213d0000000108800190000000e50000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000006da0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000006d20000413d000000000800004b000006dc0000613d0000000008050433000000000808004b0000015a0000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000007e70000013d000000400200043d000700000002001d000009570220009c000000e50000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000006f90000413d00000007030000290000000003030433000000000303004b0000015a0000613d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f0000000000120435000000230100008a0000000c020000290000000004210049000001c4012000390000000202000367000600000001001d000000000112034f000000000101043b0000000003000031000500000004001d00000000044300190000095005000041000000000641004b0000000006000019000000000605801900000950044001970000095007100197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004410019000000000142034f000000000101043b000009510510009c000004640000213d000000000513004900000020034000390000095004000041000000000653004b0000000006000019000000000604201900000950055001970000095007300197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d000000010410008c0000098b0000c13d000000000132034f000000000101043b000000010200008a0000095003000041000000000221004b000000000200001900000000020320190000095001100197000009500410009c00000000030080190000095001100167000009500110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b00000ab00000c13d000000400100043d000400000001001d000009570110009c000000e50000213d00000004030000290000004001300039000000400010043f00000020013000390000095a0200004100000000002104350000000101000039000000000013043500000ab00000013d000000400500043d000009570650009c000000e50000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000007660000413d0000000007050433000000000707004b0000015a0000613d000000f8073002100000095008000041000000000303004b0000000003070019000000000308601900000000070604330000095807700197000000000337019f00000000003604350000000c0300002900000064033000390000000203300367000000000303043b000000800630008c000008480000413d0000008006300270000009590730009c000000000603a019000009590730009c0000000007000019000000100700203900000008087001bf000009510960009c00000000070820190000004008600270000009510960009c000000000608201900000004087001bf0000094c0960009c000000000708201900000020086002700000094c0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000009510a80009c000000e50000213d0000000109900190000000e50000c13d000000400080043f0000000208700039000000000886043600000021097000390000000509900272000007b70000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000007af0000413d000000000900004b000007b90000613d0000000009060433000000000909004b0000015a0000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095a0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c000000000300201900000021076000390000000000370435000008650000013d000000400500043d000009570650009c000000e50000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000007d40000413d0000000007050433000000000707004b0000015a0000613d000000f8072002100000095008000041000000000202004b0000000002070019000000000208601900000000070604330000095807700197000000000227019f0000000000260435000000400600043d000009570260009c000000e50000213d0000000c0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000095b0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c000008c60000413d0000008007200270000009590820009c000000000702a019000009590820009c0000000008000019000000100800203900000008098001bf000009510a70009c00000000080920190000004009700270000009510a70009c000000000709201900000004098001bf0000094c0a70009c000000000809201900000020097002700000094c0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000009510b90009c000000e50000213d000000010aa00190000000e50000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa00272000008350000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b0000082d0000413d000000000a00004b000008370000613d000000000a070433000000000a0a004b0000015a0000613d000000000a090433000009580aa00197000000f80b800210000000000aab019f0000095a0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c000000000200201900000021087000390000000000280435000008e30000013d000000400600043d000009570760009c000000e50000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000008520000413d0000000008060433000000000808004b0000015a0000613d000000f8083002100000095009000041000000000303004b0000000003080019000000000309601900000000080704330000095808800197000000000338019f0000000000370435000000400700043d000009570370009c000000e50000213d0000000c0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000095b090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c000009c10000413d0000008008300270000009590930009c000000000803a019000009590930009c00000000090000190000001009002039000000080a9001bf000009510b80009c00000000090a2019000000400a800270000009510b80009c00000000080a2019000000040a9001bf0000094c0b80009c00000000090a2019000000200a8002700000094c0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000009510ca0009c000000e50000213d000000010bb00190000000e50000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000008b30000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b000008ab0000413d000000000b00004b000008b50000613d000000000b080433000000000b0b004b0000015a0000613d000000000b0a0433000009580bb00197000000f80c900210000000000bbc019f0000095a0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c000000000300201900000021098000390000000000390435000009de0000013d000000400700043d000009570870009c000000e50000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000008d00000413d0000000009070433000000000909004b0000015a0000613d000000f809200210000009500a000041000000000202004b000000000209001900000000020a601900000000090804330000095809900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b000008f00000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b000008e90000413d000000000189001900000000000104350000000008030433000000000908004b000008fd0000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b000008f60000413d000000000118001900000000000104350000000003040433000000000803004b0000090a0000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b000009030000413d000000000113001900000000000104350000000003050433000000000403004b000009170000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b000009100000413d000000000113001900000000000104350000000003060433000000000403004b000009240000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b0000091d0000413d000000000113001900000000000104350000000003070433000000000403004b000009310000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b0000092a0000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000009510450009c000000e50000213d0000000103300190000000e50000c13d000000400050043f000000230300008a0000000c060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000009500a000041000000000b96004b000000000b000019000000000b0a80190000095009900197000009500c600197000000000d9c004b000000000a00801900000000099c013f000009500990009c00000000090b001900000000090a6019000000000909004b000004640000c13d0000000d090000290000000009960019000000000697034f000000000606043b000009510a60009c000004640000213d000000000a68004900000020089000390000095009000041000000000ba8004b000000000b000019000000000b092019000009500aa00197000009500c800197000000000dac004b0000000009008019000000000aac013f000009500aa0009c00000000090bc019000000000909004b000004640000c13d000000010960008c00000e6e0000c13d000000000687034f000000000606043b000000010700008a0000095008000041000000000776004b000000000700001900000000070820190000095006600197000009500960009c00000000080080190000095006600167000009500660009c00000000070860190000006006000039000000000707004b00000f070000c13d000009570650009c000000e50000213d0000004006500039000000400060043f00000020065000390000095a07000041000000000076043500000001060000390000000000650435000000000605001900000f070000013d000000380210008c00000a930000413d00000020021002700000094c0310009c000000000301001900000000030220190000094c0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000009570440009c000000e50000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000009a90000413d00000004040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095c044001c700000000004304350000000302200210000000f80220008900000000012101cf00000004020000290000002102200039000000000012043500000ab00000013d000000400800043d000009570980009c000000e50000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000009cb0000413d000000000a080433000000000a0a004b0000015a0000613d000000f80a300210000009500b000041000000000303004b00000000030a001900000000030b6019000000000a090433000009580aa0019700000000033a019f0000000000390435000000400300043d0000002009300039000000000a010433000000000b0a004b000009eb0000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b000009e40000413d00000000019a001900000000000104350000000009020433000000000a09004b000009f80000613d000000000a000019000000000b1a0019000000200aa00039000000000c2a0019000000000c0c04330000000000cb0435000000000b9a004b000009f10000413d000000000119001900000000000104350000000002040433000000000902004b00000a050000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a29004b000009fe0000413d000000000112001900000000000104350000000002050433000000000402004b00000a120000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000924004b00000a0b0000413d000000000112001900000000000104350000000002060433000000000402004b00000a1f0000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000524004b00000a180000413d000000000112001900000000000104350000000002070433000000000402004b00000a2c0000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000a250000413d000000000112001900000000000104350000000002080433000000000402004b00000a390000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000524004b00000a320000413d000000000112001900000000000104350000000001310049000000200210008a00000000002304350000001f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000009510450009c000000e50000213d0000000102200190000000e50000c13d000000400050043f000000230200008a0000000c060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000009500a000041000000000b96004b000000000b000019000000000b0a80190000095009900197000009500c600197000000000d9c004b000000000a00801900000000099c013f000009500990009c00000000090b001900000000090a6019000000000909004b000004640000c13d0000000d090000290000000009960019000000000697034f000000000606043b000009510a60009c000004640000213d000000000a68004900000020089000390000095009000041000000000ba8004b000000000b000019000000000b092019000009500aa00197000009500c800197000000000dac004b0000000009008019000000000aac013f000009500aa0009c00000000090bc019000000000909004b000004640000c13d000000010960008c00000ebb0000c13d000000000687034f000000000606043b000000010700008a0000095008000041000000000776004b000000000700001900000000070820190000095006600197000009500960009c00000000080080190000095006600167000009500660009c00000000070860190000006006000039000000000707004b00000f9a0000c13d000009570650009c000000e50000213d0000004006500039000000400060043f00000020065000390000095a07000041000000000076043500000001060000390000000000650435000000000605001900000f9a0000013d000000400200043d000400000002001d000009570220009c000000e50000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000a9f0000413d00000004030000290000000003030433000000000303004b0000015a0000613d000000f80110021000000000030204330000095803300197000000000113019f0000095001100167000000000012043500000060010000390000000c0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b00000b250000c13d0000000603000029000000000432034f000000000300003100000005050000290000000005530019000000000904043b0000095004000041000000000659004b0000000006000019000000000604801900000950055001970000095007900197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d0000000b0400002900000000040404330000000a0500002900000000050504330000000906000029000000000606043300000007070000290000000007070433000000040800002900000000080804330000000d0a0000290000000009a90019000000000292034f000000000202043b000009510a20009c000004640000213d00000000032300490000002009900039000009500a000041000000000b39004b000000000b000019000000000b0a201900000950033001970000095009900197000000000c39004b000000000a008019000000000339013f000009500330009c00000000030b001900000000030a6019000000000303004b000004640000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000095102200197000000380320008c00000ccb0000413d00000020032002700000094c0420009c000000000402001900000000040320190000094c0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009570650009c000000e50000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a00000b0f0000413d0000000006050433000000000606004b0000015a0000613d00000000060404330000095806600197000000f807300210000000000667019f0000095e066001c700000000006404350000000303300210000000f80330008900000000023201cf0000002103500039000000000023043500000ce50000013d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000102200190000004640000613d000000000101043b000000800210008c00000b7f0000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000804000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f000000020430003900000000044204360000002105300039000000050550027200000b6c0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00000b640000413d000000000500004b00000b6e0000613d0000000005020433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c00000000010020190000002103200039000000000013043500000b9c0000013d000000400200043d000009570320009c000000e50000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000b890000413d0000000004020433000000000404004b0000015a0000613d000000f8041002100000095005000041000000000101004b0000000001040019000000000105601900000000040304330000095804400197000000000114019f0000000000130435000000400100043d00000020031000390000000004020433000000000504004b00000ba90000613d000000000500001900000000063500190000002005500039000000000725001900000000070704330000000000760435000000000645004b00000ba20000413d00000000023400190000096d03000041000000000032043500000000021200490000001e0320008a000000000031043500000021022000390000000803000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000009510420009c000000e50000213d0000000103300190000000e50000c13d000000400020043f000000020200036700000ab80000013d000000000343001a0000094c044001970000030f0000413d0000000005000031000000000635004b0000030f0000413d000000000242034f00000000033500490000094c0410009c000000cf0000213d0000094c0330019700000000023203df000000c001100210000009610110019700000962011001c700000000011203af0000801002000039252a25250000040f000000000301001900000060033002700001094c0030019d0000094c033001970003000000010355000000010220019000000ea00000613d0000003f013000390000096301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f00000000013204360000001f04300039000000050440027200000bf10000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000be90000413d000000000400004b00000bf30000613d0000000104000031000000000443004b000004640000213d00000003050003670000001f0430018f000000050330027200000c030000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000bfb0000413d000000000604004b00000c120000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e5c0000c13d0000000c0b0000290000006402b000390000000203000367000000000523034f0000004402b00039000000000423034f0000002402b00039000000000623034f0000008402b00039000000a407b00039000000c408b00039000000e409b00039000001040ab00039000001240bb00039000000000bb3034f000000000aa3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000d02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000a0a043b000000000b0b043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c1000390000000b0d0000290000000000dc0435000001800c100039000000090d0000290000000000dc0435000001600c1000390000000000bc0435000001400b1000390000000000ab0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000965030000410000000000320435000001c0030000390000000000310435000009660310009c000000e50000213d000001e003100039000000400030043f0000094c030000410000094c0420009c0000000002038019000000400220021000000000010104330000094c0410009c00000000010380190000006001100210000000000121019f00000000020004140000094c0420009c0000000002038019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000101043b000900000001001d000000400100043d000b00000001001d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000a040000290000000102200190000004640000613d0000000b050000290000002002500039000000000101043b000009670300004100000000003204350000008003500039000000000013043500000060015000390000096803000041000000000031043500000040015000390000096903000041000000000031043500000000004504350000096a0150009c000000e50000213d0000000b04000029000000a001400039000000400010043f0000094c010000410000094c0320009c0000000002018019000000400220021000000000030404330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000301043b000000400100043d00000042021000390000000904000029000000000042043500000020021000390000096b04000041000000000042043500000022041000390000000000340435000000420300003900000000003104350000096c0310009c000000e50000213d0000008003100039000000400030043f0000094c030000410000094c0420009c0000000002038019000000400220021000000000010104330000094c0410009c00000000010380190000006001100210000000000121019f00000000020004140000094c0420009c0000000002038019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b00002900000db30000c13d000004640000013d000000400500043d000009570350009c000000e50000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a00000cd50000413d0000000004050433000000000404004b0000015a0000613d000000f80220021000000000040304330000095804400197000000000242019f0000095d02200041000000000023043500000000020000310000000503000029000000000632001900000002030003670000000604000029000000000443034f000000000404043b0000095007000041000000000864004b0000000008000019000000000807801900000950066001970000095009400197000000000a69004b0000000007008019000000000669013f000009500660009c00000000060800190000000006076019000000000606004b000004640000c13d0000000d060000290000000006640019000000000363034f000000000403043b000009510340009c000004640000213d000000000242004900000020066000390000095003000041000000000726004b0000000007000019000000000703201900000950022001970000095008600197000000000928004b0000000003008019000000000228013f000009500220009c00000000020700190000000002036019000000000202004b000004640000c13d000000400200043d00000020032000390000000007050433000000000807004b00000d1d0000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b00000d160000413d000000000537001900000000000504350000000b0b00002900000000070b0433000000000807004b00000d2b0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d240000413d000000000557001900000000000504350000000a0b00002900000000070b0433000000000807004b00000d390000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d320000413d00000000055700190000000000050435000000090b00002900000000070b0433000000000807004b00000d470000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d400000413d00000000055700190000000000050435000000070b00002900000000070b0433000000000807004b00000d550000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d4e0000413d00000000055700190000000000050435000000040b00002900000000070b0433000000000807004b00000d630000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d5c0000413d00000000055700190000001f0740018f00000000000504350000000206600367000000050840027200000d720000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b00000d6a0000413d000000000907004b00000d810000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b00000d8e0000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b00000d870000413d000000000145001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f0000094c010000410000094c0430009c0000000003018019000000400330021000000000020204330000094c0420009c00000000020180190000006002200210000000000232019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b000029000004640000613d00000002020003670000000d03000029000000000332034f000000000101043b000c00000001001d000000000103043b000000710310008c000010130000c13d000001e401b00039000000000312034f00000000010000310000000004b10049000000230440008a000000000303043b0000095005000041000000000643004b0000000006000019000000000605801900000950044001970000095007300197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004430019000000000242034f000000000302043b000009510230009c000004640000213d000000000131004900000020044000390000095002000041000000000514004b0000000005000019000000000502201900000950011001970000095006400197000000000716004b0000000002008019000000000116013f000009500110009c00000000010500190000000001026019000000000101004b000004640000c13d00000000010004140000000202000367000000000503004b000012760000c13d00000000030000310000094c0410009c000000cf0000213d0000094c0330019700000000023203df000000c001100210000009610110019700000962011001c700000000011203af0000801002000039252a25250000040f000000000301001900000060033002700001094c0030019d0000094c0330019700030000000103550000000102200190000012ec0000613d0000003f013000390000096302100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000009510520009c000000e50000213d0000000104400190000000e50000c13d000000400020043f00000000023104360000001f04300039000000050440027200000e160000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000e0e0000413d000000000400004b00000e180000613d0000000104000031000000000443004b000004640000213d00000003050003670000001f0430018f000000050330027200000e280000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000e200000413d000000000604004b00000e370000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000e5c0000c13d0000000002020433000000400100043d0000004003100039000000000023043500000020021000390000000c03000029000000000032043500000040030000390000000000310435000009720310009c000000e50000213d0000006003100039000000400030043f0000094c030000410000094c0420009c0000000002038019000000400220021000000000010104330000094c0410009c00000000010380190000006001100210000000000121019f00000000020004140000094c0420009c0000000002038019000000c002200210000000000112019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000101043b0000125a0000013d000000400100043d00000044021000390000097103000041000000000032043500000024021000390000001f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000380760008c00000eed0000413d00000020076002700000094c0860009c000000000806001900000000080720190000094c0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009570950009c000000e50000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e890000413d0000000009050433000000000909004b0000015a0000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095c099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000f070000013d0000001f0430018f000000050230027200000eab0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000ea40000413d000000000504004b00000eb90000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000252c00010430000000380760008c00000f800000413d00000020076002700000094c0860009c000000000806001900000000080720190000094c0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009570950009c000000e50000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000ed60000413d0000000009050433000000000909004b0000015a0000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095c099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000f9a0000013d000009570750009c000000e50000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000ef60000413d0000000008050433000000000808004b0000015a0000613d000000f80660021000000000080704330000095808800197000000000668019f000009500660016700000000006704350000000006050019000000400500043d000009570750009c000000e50000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000f110000413d0000000009050433000000000909004b0000015a0000613d000000000907043300000958099001970000095d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000009500a000041000000000d9c004b000000000d000019000000000d0a80190000095009900197000009500ec00197000000000f9e004b000000000a00801900000000099e013f000009500990009c00000000090d001900000000090a6019000000000909004b000004640000c13d0000000009020433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b000009510db0009c000004640000213d0000000007b70049000000200cc00039000009500d000041000000000e7c004b000000000e000019000000000e0d20190000095007700197000009500cc00197000000000f7c004b000000000d00801900000000077c013f000009500770009c00000000070e001900000000070d6019000000000707004b000004640000c13d00000000079a00190000000007b70019000000000905043300000000079700190000095109700197000000380790008c000010690000413d00000020079002700000094c0890009c000000000709a0190000094c0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009570b70009c000000e50000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000f6a0000413d000000000b070433000000000b0b004b0000015a0000613d000000000b0a0433000009580bb00197000000f80c800210000000000bbc019f0000095e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000010820000013d000009570750009c000000e50000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000f890000413d0000000008050433000000000808004b0000015a0000613d000000f80660021000000000080704330000095808800197000000000668019f000009500660016700000000006704350000000006050019000000400500043d000009570750009c000000e50000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000fa40000413d0000000009050433000000000909004b0000015a0000613d000000000907043300000958099001970000095d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000009500a000041000000000d9c004b000000000d000019000000000d0a80190000095009900197000009500ec00197000000000f9e004b000000000a00801900000000099e013f000009500990009c00000000090d001900000000090a6019000000000909004b000004640000c13d0000000009030433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b000009510db0009c000004640000213d0000000007b70049000000200cc00039000009500d000041000000000e7c004b000000000e000019000000000e0d20190000095007700197000009500cc00197000000000f7c004b000000000d00801900000000077c013f000009500770009c00000000070e001900000000070d6019000000000707004b000004640000c13d00000000079a00190000000007b70019000000000905043300000000079700190000095109700197000000380790008c0000112a0000413d00000020079002700000094c0890009c000000000709a0190000094c0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009570b70009c000000e50000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000ffd0000413d000000000b070433000000000b0b004b0000015a0000613d000000000b0a0433000009580bb00197000000f80c800210000000000bbc019f0000095e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000011430000013d000000000301004b000011250000c13d0000010401b00039000000000112034f000000000101043b000000800210008c000011e60000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000b04000029000000000334043600000021042000390000000504400272000010540000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000104c0000413d000000000400004b000010560000613d0000000b040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000012060000013d000000400700043d000009570a70009c000000e50000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000010720000413d000000000a070433000000000a0a004b0000015a0000613d000000f809900210000000000a080433000009580aa001970000000009a9019f0000095d099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000009500a000041000000000b83004b000000000b000019000000000b0a80190000095008800197000009500c300197000000000d8c004b000000000a00801900000000088c013f000009500880009c00000000080b001900000000080a6019000000000808004b000004640000c13d0000000d080000290000000003830019000000000434034f000000000804043b000009510480009c000004640000213d000000000489004900000020093000390000095003000041000000000a49004b000000000a000019000000000a0320190000095004400197000009500b900197000000000c4b004b000000000300801900000000044b013f000009500440009c00000000030ac019000000000303004b000004640000c13d000000400300043d00000020043000390000095f0a0000410000000000a40435000000210a300039000000000b070433000000000c0b004b000010ba0000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b000010b30000413d0000000007ab00190000000000070435000000000a020433000000000b0a004b000010c70000613d000000000b000019000000000c7b0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000cab004b000010c00000413d00000000027a001900000000000204350000000007060433000000000a07004b000010d40000613d000000000a000019000000000b2a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b000010cd0000413d00000000022700190000001f0680018f000000000002043500000002079003670000000509800272000010e30000613d000000000a000019000000050ba00210000000000cb20019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000010db0000413d000000000a06004b000010f20000613d0000000509900210000000000797034f00000000099200190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000282001900000000000204350000000006050433000000000706004b000010ff0000613d000000000700001900000000082700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000010f80000413d000000000226001900000000000204350000000002320049000000200520008a00000000005304350000001f02200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000009510510009c000000e50000213d0000000102200190000000e50000c13d000000400010043f0000094c010000410000094c0240009c00000000020100190000000002044019000000400220021000000000030304330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b00002900000db30000c13d000004640000013d000000020210008c000012560000c13d0000000d01000029252a1e5e0000040f0000125a0000013d000000400700043d000009570a70009c000000e50000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000011330000413d000000000a070433000000000a0a004b0000015a0000613d000000f809900210000000000a080433000009580aa001970000000009a9019f0000095d099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000009500a000041000000000b82004b000000000b000019000000000b0a80190000095008800197000009500c200197000000000d8c004b000000000a00801900000000088c013f000009500880009c00000000080b001900000000080a6019000000000808004b000004640000c13d0000000d080000290000000002820019000000000424034f000000000804043b000009510480009c000004640000213d000000000489004900000020092000390000095002000041000000000a49004b000000000a000019000000000a0220190000095004400197000009500b900197000000000c4b004b000000000200801900000000044b013f000009500440009c00000000020ac019000000000202004b000004640000c13d000000400200043d0000002004200039000009600a0000410000000000a40435000000210a200039000000000b070433000000000c0b004b0000117b0000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b000011740000413d0000000007ab00190000000000070435000000000a030433000000000b0a004b000011880000613d000000000b000019000000000c7b0019000000200bb00039000000000d3b0019000000000d0d04330000000000dc0435000000000cab004b000011810000413d00000000037a001900000000000304350000000007060433000000000a07004b000011950000613d000000000a000019000000000b3a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b0000118e0000413d00000000033700190000001f0680018f000000000003043500000002079003670000000509800272000011a40000613d000000000a000019000000050ba00210000000000cb30019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b0000119c0000413d000000000a06004b000011b30000613d0000000509900210000000000797034f00000000099300190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000383001900000000000304350000000006050433000000000706004b000011c00000613d000000000700001900000000083700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000011b90000413d000000000336001900000000000304350000000003230049000000200530008a00000000005204350000001f03300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000009510510009c000000e50000213d0000000103300190000000e50000c13d000000400010043f0000094c010000410000094c0340009c00000000030100190000000003044019000000400330021000000000020204330000094c0420009c00000000020180190000006002200210000000000232019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f00000001022001900000000c0b00002900000db30000c13d000004640000013d000000400200043d000b00000002001d000009570220009c000000e50000213d0000000b030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000011f20000413d0000000b030000290000000003030433000000000303004b0000015a0000613d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f0000000000120435000000a401b000390000000201100367000000000201043b000000800120008c0000127f0000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000012430000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000123b0000413d000000000500004b000012450000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000129c0000013d000000010110008c000012650000c13d0000000d01000029252a18170000040f000000400200043d00000020032000390000000c04000029000000000043043500000000001204350000094c010000410000094c0320009c0000000001024019000000400110021000000973011001c70000252b0001042e000000400200043d000d00000002001d000009530100004100000000001204350000000401200039252a180d0000040f0000000d0400002900000000014100490000094c020000410000094c0310009c00000000010280190000094c0340009c000000000204401900000040022002100000006001100210000000000121019f0000252c00010430000000000343001a0000094c044001970000030f0000413d0000000005000031000000000635004b0000030f0000413d000000000242034f000000000335004900000dea0000013d000000400100043d000009570310009c000000e50000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000012890000413d0000000004010433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000006402b000390000000202200367000000000302043b000000800230008c000013070000413d0000008002300270000009590430009c000000000203a019000009590430009c0000000004000019000000100400203900000008054001bf000009510620009c00000000040520190000004005200270000009510620009c000000000205201900000004054001bf0000094c0620009c000000000405201900000020052002700000094c0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000009510750009c000000e50000213d0000000106600190000000e50000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000012d90000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000012d10000413d000000000600004b000012db0000613d0000000006020433000000000606004b0000015a0000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000013240000013d0000001f0430018f0000000502300272000012f70000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000012f00000413d000000000504004b000013050000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000252c00010430000000400200043d000009570420009c000000e50000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000013110000413d0000000005020433000000000505004b0000015a0000613d000000f8053002100000095006000041000000000303004b0000000003050019000000000306601900000000050404330000095805500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000013320000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b0000132b0000413d000000000134001900000000000104350000000003020433000000000403004b0000133f0000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000013380000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d000009510220009c000000e50000213d0000000101100190000000e50000c13d0000000901000029000000400010043f000009570110009c000000e50000213d00000000040b001900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f00000020025000390000095b0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000013b90000413d0000008002100270000009590310009c000000000201a019000009590310009c0000000003000019000000100300203900000008043001bf000009510520009c00000000030420190000004004200270000009510520009c000000000204201900000004043001bf0000094c0520009c000000000304201900000020042002700000094c0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000009510530009c000000e50000213d0000000104400190000000e50000c13d000000400030043f00000002032000390000000704000029000000000334043600000021042000390000000504400272000013a40000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000139c0000413d000000000400004b000013a60000613d00000007040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000070200002900000021022000390000000000120435000013d90000013d000000400200043d000700000002001d000009570220009c000000e50000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000013c50000413d00000007030000290000000003030433000000000303004b0000015a0000613d000000f8031002100000095004000041000000000101004b0000000001030019000000000104601900000000030204330000095803300197000000000113019f0000000000120435000000230100008a00000000020b00190000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000300000004001d00000000044300190000095005000041000000000641004b0000000006000019000000000605801900000950044001970000095007100197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000004410019000000000142034f000000000101043b000009510510009c000004640000213d000000000513004900000020034000390000095004000041000000000653004b0000000006000019000000000604201900000950055001970000095007300197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d000000010410008c000014280000c13d000000000132034f000000000101043b000000010200008a0000095003000041000000000221004b000000000200001900000000020320190000095001100197000009500410009c00000000030080190000095001100167000009500110009c000000000102001900000000010360190000006002000039000600000002001d000000000101004b0000147b0000c13d000000400100043d000600000001001d000009570110009c000000e50000213d00000006030000290000004001300039000000400010043f00000020013000390000095a020000410000000000210435000000010100003900000000001304350000147b0000013d000000380210008c0000145e0000413d00000020021002700000094c0310009c000000000301001900000000030220190000094c0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000600000004001d000009570440009c000000e50000213d000000000232019f00000006040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000014460000413d00000006040000290000000004040433000000000404004b0000015a0000613d00000000040304330000095804400197000000f805200210000000000445019f0000095c044001c700000000004304350000000302200210000000f80220008900000000012101cf0000000602000029000000210220003900000000001204350000147b0000013d000000400200043d000600000002001d000009570220009c000000e50000213d00000006030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a0000146a0000413d00000006030000290000000003030433000000000303004b0000015a0000613d000000f80110021000000000030204330000095803300197000000000113019f0000095001100167000000000012043500000000030000310000000301000029000000000513001900000000010b0019000001e4011000390000000202000367000000000412034f000000000404043b0000095006000041000000000754004b0000000007000019000000000706801900000950055001970000095008400197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000505004b000004640000c13d0000000d050000290000000004540019000000000542034f000000000505043b000009510650009c000004640000213d000000200650008c000004640000413d000000000553004900000020034000390000095004000041000000000653004b0000000006000019000000000604201900000950055001970000095007300197000000000857004b0000000004008019000000000557013f000009500550009c000000000406c019000000000404004b000004640000c13d000000000232034f000000000202043b000000800320008c000014fb0000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000500000005001d000000000554004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f00000002043000390000000505000029000000000445043600000021053000390000000505500272000014e60000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000014de0000413d000000000500004b000014e80000613d00000005050000290000000005050433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000000503000029000000210330003900000000002304350000151b0000013d000000400300043d000500000003001d000009570330009c000000e50000213d00000005040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000015070000413d00000005040000290000000004040433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000003000031000000030200002900000000052300190000000202000367000000000412034f000000000404043b0000095006000041000000000754004b0000000007000019000000000706801900000950055001970000095008400197000000000958004b0000000006008019000000000558013f000009500550009c00000000050700190000000005066019000000000505004b000004640000c13d0000000d050000290000000004540019000000000542034f000000000505043b000009510650009c000004640000213d000000400650008c000004640000413d000000000353004900000020054000390000095006000041000000000735004b0000000007000019000000000706201900000950033001970000095005500197000000000835004b0000000006008019000000000335013f000009500330009c00000000030700190000000003066019000000000303004b000004640000c13d0000004003400039000000000232034f000000000202043b000000800320008c0000159b0000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000400000005001d000000000554004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f00000002043000390000000405000029000000000445043600000021053000390000000505500272000015860000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000157e0000413d000000000500004b000015880000613d00000004050000290000000005050433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000040300002900000021033000390000000000230435000015bb0000013d000000400300043d000400000003001d000009570330009c000000e50000213d00000004040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000015a70000413d00000004040000290000000004040433000000000404004b0000015a0000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f00000000002304350000000003000031000000030200002900000000042300190000000202000367000000000112034f000000000101043b0000095005000041000000000641004b0000000006000019000000000605801900000950044001970000095007100197000000000847004b0000000005008019000000000447013f000009500440009c00000000040600190000000004056019000000000404004b000004640000c13d0000000d040000290000000001410019000000000412034f000000000404043b000009510540009c000004640000213d000000000343004900000020051000390000095006000041000000000735004b0000000007000019000000000706201900000950033001970000095005500197000000000835004b0000000006008019000000000335013f000009500330009c00000000030700190000000003066019000000000303004b000004640000c13d000000410340008c0000015a0000413d0000006001100039000000000112034f000000000101043b000000f801100270000100000001001d0000001b0110008a000000020110008c0000165d0000813d0000014401b00039000000000112034f000000000101043b000000000101004b0000166f0000613d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000102200190000004640000613d000000000201043b0000000101200210000000000302004b0000160a0000613d000000090300008a000000000331004b0000030f0000213d00000000322100d9000000020220008c0000030f0000c13d000000010300002900000000011300190000000802100039000000000132004b0000030f0000413d000000800120008c000100000002001d0000166f0000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c00000000010000190000000101002039000000000313001900000041013000390000000804000029000000000441016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000000e50000213d0000000105500190000000e50000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000164a0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000016420000413d000000000500004b0000164c0000613d0000000005010433000000000505004b0000015a0000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000168c0000013d000000400100043d00000044021000390000096e03000041000000000032043500000024021000390000000f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c00010430000000400100043d000009570210009c000000e50000213d0000004002100039000000400020043f0000000102000039000000000221043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000016790000413d0000000003010433000000000303004b0000015a0000613d0000000105000029000000f8035002100000095004000041000000000505004b000000000304601900000000040204330000095804400197000000000334019f000000000032043500000000020000310000000303000029000000000332001900000002080003670000000204000029000000000448034f000000000904043b0000095004000041000000000539004b0000000005000019000000000504801900000950033001970000095006900197000000000736004b0000000004008019000000000336013f000009500330009c00000000030500190000000003046019000000000303004b000004640000c13d0000000b0300002900000000030304330000000a0400002900000000040404330000000905000029000000000505043300000007060000290000000006060433000000060700002900000000070704330000000d0a0000290000000009a90019000000000898034f000000000808043b000009510a80009c000004640000213d00000000028200490000002009900039000009500a000041000000000b29004b000000000b000019000000000b0a201900000950022001970000095009900197000000000c29004b000000000a008019000000000229013f000009500220009c00000000020b001900000000020a6019000000000202004b000004640000c13d00000000023400190000000002520019000000000262001900000000027200190000000002820019000000050300002900000000030304330000000002320019000000040300002900000000030304330000000002320019000000000301043300000000023200190000095102200197000000380320008c000017010000413d00000020032002700000094c0420009c000000000402001900000000040320190000094c0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009570650009c000000e50000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a000016eb0000413d0000000006050433000000000606004b0000015a0000613d00000000060404330000095806600197000000f807300210000000000667019f0000095e066001c700000000006404350000000303300210000000f80330008900000000023201cf000000210350003900000000002304350000171b0000013d000000400500043d000009570350009c000000e50000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a0000170b0000413d0000000004050433000000000404004b0000015a0000613d000000f80220021000000000040304330000095804400197000000000242019f0000095d02200041000000000023043500000000020000310000000303000029000000000632001900000002030003670000000204000029000000000443034f000000000404043b0000095007000041000000000864004b0000000008000019000000000807801900000950066001970000095009400197000000000a69004b0000000007008019000000000669013f000009500660009c00000000060800190000000006076019000000000606004b000004640000c13d0000000d060000290000000006640019000000000363034f000000000403043b000009510340009c000004640000213d000000000242004900000020066000390000095003000041000000000726004b0000000007000019000000000703201900000950022001970000095008600197000000000928004b0000000003008019000000000228013f000009500220009c00000000020700190000000002036019000000000202004b000004640000c13d000000400200043d00000020032000390000000007050433000000000807004b000017530000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b0000174c0000413d000000000537001900000000000504350000000b070000290000000007070433000000000807004b000017620000613d0000000008000019000000000958001900000020088000390000000b0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000175a0000413d000000000557001900000000000504350000000a070000290000000007070433000000000807004b000017710000613d0000000008000019000000000958001900000020088000390000000a0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017690000413d0000000005570019000000000005043500000009070000290000000007070433000000000807004b000017800000613d000000000800001900000000095800190000002008800039000000090a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017780000413d0000000005570019000000000005043500000007070000290000000007070433000000000807004b0000178f0000613d000000000800001900000000095800190000002008800039000000070a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017870000413d0000000005570019000000000005043500000006070000290000000007070433000000000807004b0000179e0000613d000000000800001900000000095800190000002008800039000000060a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017960000413d00000000055700190000001f0740018f000000000005043500000002066003670000000508400272000017ad0000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b000017a50000413d000000000907004b000017bc0000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b000017c90000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b000017c20000413d0000000001450019000000000001043500000005040000290000000004040433000000000504004b000017d80000613d0000000005000019000000000615001900000020055000390000000507000029000000000775001900000000070704330000000000760435000000000645004b000017d00000413d0000000001140019000000000001043500000004040000290000000004040433000000000504004b000017e70000613d0000000005000019000000000615001900000020055000390000000407000029000000000775001900000000070704330000000000760435000000000645004b000017df0000413d000000000114001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000009510510009c000000e50000213d0000000104400190000000e50000c13d000000400010043f0000094c010000410000094c0430009c0000000003018019000000400330021000000000020204330000094c0420009c00000000020180190000006002200210000000000232019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f0000000102200190000004640000613d000000000101043b0000125a0000013d000000400210003900000975030000410000000000320435000000200210003900000013030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0006000000000002000400000001001d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f000000010220019000001e3e0000613d000000000201043b000000800120008c000018730000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c00001e400000213d000000010550019000001e400000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000018600000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000018580000413d000000000500004b000018620000613d0000000005010433000000000505004b00001e460000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000018900000013d000000400100043d000009570310009c00001e400000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000187d0000413d0000000004010433000000000404004b00001e460000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c000018e10000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000009510750009c00001e400000213d000000010660019000001e400000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000018ce0000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000018c60000413d000000000600004b000018d00000613d0000000006030433000000000606004b00001e460000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000018fe0000013d000000400300043d000009570430009c00001e400000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000018eb0000413d0000000005030433000000000505004b00001e460000613d000000f8052002100000095006000041000000000202004b0000000002050019000000000206601900000000050404330000095805500197000000000225019f00000000002404350000000402000029000000a0022000390000000202200367000000000202043b000000800420008c0000194f0000413d0000008004200270000009590520009c000000000402a019000009590520009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c00001e400000213d000000010770019000001e400000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000193c0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000019340000413d000000000700004b0000193e0000613d0000000007040433000000000707004b00001e460000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000196c0000013d000000400400043d000009570540009c00001e400000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a000019590000413d0000000006040433000000000606004b00001e460000613d000000f8062002100000095007000041000000000202004b0000000002060019000000000207601900000000060504330000095806600197000000000226019f0000000000250435000000040200002900000060022000390000000202200367000000000202043b000000800520008c000019bd0000413d0000008005200270000009590620009c000000000502a019000009590620009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c00001e400000213d000000010880019000001e400000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000019aa0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000019a20000413d000000000800004b000019ac0000613d0000000008050433000000000808004b00001e460000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000019da0000013d000000400500043d000009570650009c00001e400000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000019c70000413d0000000007050433000000000707004b00001e460000613d000000f8072002100000095008000041000000000202004b0000000002070019000000000208601900000000070604330000095807700197000000000227019f0000000000260435000000400600043d000009570260009c00001e400000213d000000040900002900000040029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000095b0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000120029000390000000202200367000000000202043b000000800720008c00001a3b0000413d0000008007200270000009590820009c000000000702a019000009590820009c0000000008000019000000100800203900000008098001bf000009510a70009c00000000080920190000004009700270000009510a70009c000000000709201900000004098001bf0000094c0a70009c000000000809201900000020097002700000094c0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000009510b90009c00001e400000213d000000010aa0019000001e400000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200001a280000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00001a200000413d000000000a00004b00001a2a0000613d000000000a070433000000000a0a004b00001e460000613d000000000a090433000009580aa00197000000f80b800210000000000aab019f0000095a0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500001a580000013d000000400700043d000009570870009c00001e400000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00001a450000413d0000000009070433000000000909004b00001e460000613d000000f809200210000009500a000041000000000202004b000000000209001900000000020a601900000000090804330000095809900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b00001a650000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b00001a5e0000413d000000000189001900000000000104350000000008030433000000000908004b00001a720000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b00001a6b0000413d000000000118001900000000000104350000000003040433000000000803004b00001a7f0000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b00001a780000413d000000000113001900000000000104350000000003050433000000000403004b00001a8c0000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b00001a850000413d000000000113001900000000000104350000000003060433000000000403004b00001a990000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b00001a920000413d000000000113001900000000000104350000000003070433000000000403004b00001aa60000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b00001a9f0000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b00000000010000190000000101004039000009510350009c00001e400000213d000000010110019000001e400000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000095009000041000000000a16004b000000000a000019000000000a0980190000095001100197000009500b600197000000000c1b004b000000000900801900000000011b013f000009500110009c00000000010a00190000000001096019000000000101004b00001e3e0000c13d00000004010000290000000001160019000000000617034f000000000606043b000009510960009c00001e3e0000213d000000000968004900000020081000390000095001000041000000000a98004b000000000a000019000000000a0120190000095009900197000009500b800197000000000c9b004b000000000100801900000000099b013f000009500990009c00000000010ac019000000000101004b00001e3e0000c13d000000010160008c00001b030000c13d000000000187034f000000000101043b000000010300008a0000095006000041000000000331004b000000000300001900000000030620190000095001100197000009500710009c00000000060080190000095001100167000009500110009c000000000103001900000000010660190000006006000039000000000101004b00001b4f0000c13d000009570150009c00001e400000213d0000004001500039000000400010043f00000020015000390000095a03000041000000000031043500000001010000390000000000150435000000000605001900001b4f0000013d000000380160008c00001b350000413d00000020016002700000094c0360009c000000000306001900000000030120190000094c0160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009570350009c00001e400000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a00001b1e0000413d0000000001050433000000000101004b00001e460000613d00000000010804330000095801100197000000f803700210000000000113019f0000095c011001c700000000001804350000000301700210000000f80110008900000000011601cf00000021035000390000000000130435000000000605001900001b4f0000013d000009570150009c00001e400000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a00001b3e0000413d0000000001050433000000000101004b00001e460000613d000000f80160021000000000030704330000095803300197000000000113019f000009500110016700000000001704350000000006050019000000400500043d000009570150009c00001e400000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a00001b5a0000413d0000000001050433000000000101004b00001e460000613d000000000107043300000958011001970000095d011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b000009500c000041000000000d1b004b000000000d000019000000000d0c80190000095001100197000009500eb00197000000000f1e004b000000000c00801900000000011e013f000009500110009c00000000010d001900000000010c6019000000000101004b00001e3e0000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b000009510cb0009c00001e3e0000213d000000000cb8004900000020081000390000095001000041000000000dc8004b000000000d000019000000000d012019000009500cc00197000009500e800197000000000fce004b0000000001008019000000000cce013f000009500cc0009c00000000010dc019000000000101004b00001e3e0000c13d0000002001b0008c00001e3e0000413d000000000187034f000000000801043b000000800180008c00001be40000413d0000008001800270000009590780009c000000000108a019000009590780009c00000000070000190000001007002039000000080b7001bf000009510c10009c00000000070b2019000000400b100270000009510c10009c00000000010b2019000000040b7001bf0000094c0c10009c00000000070b2019000000200b1002700000094c0c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c004039000009510d10009c00001e400000213d000000010cc0019000001e400000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d10027200001bd00000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b00001bc80000413d000000000100004b00001bd20000613d0000000001070433000000000101004b00001e460000613d00000000010c04330000095801100197000000f803b00210000000000113019f0000095a0110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c000000000103001900000000010020190000002103700039000000000013043500001c000000013d000000400700043d000009570170009c00001e400000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a00001bee0000413d0000000001070433000000000101004b00001e460000613d000000f8018002100000095003000041000000000808004b000000000103601900000000030b04330000095803300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000095003000041000000000d1b004b000000000d000019000000000d0380190000095001100197000009500eb00197000000000f1e004b000000000300801900000000011e013f000009500110009c00000000010d00190000000001036019000000000101004b00001e3e0000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000095101d0009c00001e3e0000213d0000000001dc00490000002003b00039000009500c000041000000000e13004b000000000e000019000000000e0c201900000950011001970000095003300197000000000f13004b000000000c008019000000000113013f000009500110009c00000000010e001900000000010c6019000000000101004b00001e3e0000c13d0000004001d0008c00001e3e0000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c00001c7c0000413d0000008001b002700000095903b0009c00000000010ba0190000095903b0009c0000000003000019000000100300203900000008083001bf000009510c10009c00000000030820190000004008100270000009510c10009c000000000108201900000004083001bf0000094c0c10009c000000000308201900000020081002700000094c0c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d004039000009510310009c00001e400000213d0000000103d0019000001e400000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e10027200001c680000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b00001c600000413d000000000100004b00001c6a0000613d0000000001080433000000000101004b00001e460000613d00000000010d04330000095801100197000000f803c00210000000000113019f0000095a0110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c000000000103001900000000010020190000002103800039000000000013043500001c980000013d000000400800043d000009570180009c00001e400000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a00001c860000413d0000000001080433000000000101004b00001e460000613d000000f801b00210000009500300004100000000090b004b000000000103601900000000030c04330000095803300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b000009500300004100000000091a004b000000000900001900000000090380190000095001100197000009500da00197000000000e1d004b000000000300801900000000011d013f000009500110009c00000000010900190000000001036019000000000101004b00001e3e0000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000095101d0009c00001e3e0000213d0000000001dc00490000002003a000390000095009000041000000000c13004b000000000c000019000000000c09201900000950011001970000095003300197000000000e13004b0000000009008019000000000113013f000009500110009c00000000010c00190000000001096019000000000101004b00001e3e0000c13d0000004101d0008c00001e460000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c9000009500c000041000000000101043b000000f8011002700000001b0310008c00001cd30000613d000000000b000415000000050bb0008a000000200bb000c90000095f0c0000410000001c0110008c00001e4c0000c13d000000400a00043d0000095701a0009c00001e400000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a00001cdd0000413d00000000010a0433000000000101004b00001e460000613d00000000010d043300000958011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b000009500300004100000000091f004b000000000900001900000000090380190000095001100197000009500cf00197000000000d1c004b000000000300801900000000011c013f000009500110009c00000000010900190000000001036019000000000101004b00001e3e0000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000095103e0009c00001e3e0000213d0000000003eb004900000020011000390000095009000041000000000b31004b000000000b000019000000000b09201900000950033001970000095001100197000000000f31004b0000000009008019000000000131013f000009500110009c00000000010b00190000000001096019000000000101004b00001e3e0000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a04330000000001310019000009510c1001970000003801c0008c00001d560000413d0000002001c002700000094c03c0009c00000000030c001900000000030120190000094c01c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095703b0009c00001e400000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a00001d400000413d00000000010b0433000000000101004b00001e460000613d00000000010d04330000095801100197000000f803900210000000000113019f0000095e011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b00039000000000013043500001d700000013d000000400b00043d0000095701b0009c00001e400000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a00001d600000413d00000000010b0433000000000101004b00001e460000613d000000f801c0021000000000030904330000095803300197000000000131019f0000095d011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000095009000041000000000d13004b000000000d000019000000000d0980190000095001100197000009500e300197000000000f1e004b000000000900801900000000011e013f000009500110009c00000000010d00190000000001096019000000000101004b00001e3e0000c13d00000004010000290000000001130019000000000314034f000000000903043b000009510390009c00001e3e0000213d00000000039c0049000000200c100039000009500100004100000000043c004b000000000400001900000000040120190000095003300197000009500dc00197000000000e3d004b000000000100801900000000033d013f000009500330009c000000000104c019000000000101004b00001e3e0000c13d000000400300043d00000020043000390000095f01000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b00001daa0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b00001da30000413d000000000bde001900000000000b0435000000000d02043300000000010d004b00001db70000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b00001db00000413d0000000002bd00190000000000020435000000000b06043300000000010b004b00001dc40000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b00001dbd0000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c90027200001dd30000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b00001dcb0000413d000000000106004b00001de20000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b00001def0000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b00001de80000413d0000000002260019000000000002043500000000050a0433000000000105004b00001dfc0000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b00001df50000413d000000000225001900000000000204350000000005070433000000000105004b00001e090000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b00001e020000413d000000000225001900000000000204350000000005080433000000000105004b00001e160000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b00001e0f0000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b00000000020000190000000102004039000009510410009c00001e400000213d000000010220019000001e400000c13d000000400010043f0000094c0100004100000004040000290000094c0240009c00000000020100190000000002044019000000400220021000000000030304330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f000000010220019000001e3e0000613d000000000101043b000000000001042d00000000010000190000252c000104300000096f0100004100000000001004350000004101000039000000040010043f00000970010000410000252c000104300000096f0100004100000000001004350000003201000039000000040010043f00000970010000410000252c00010430000000400100043d00000044021000390000096e03000041000000000032043500000024021000390000000f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c000104300006000000000002000400000001001d000009550100004100000000001004390000094c0100004100000000020004140000094c0320009c0000000001024019000000c00110021000000956011001c70000800b02000039252a25200000040f0000000102200190000025000000613d000000000201043b000000800120008c00001eba0000413d0000008001200270000009590320009c000000000102a019000009590320009c0000000003000019000000100300203900000008043001bf000009510510009c00000000030420190000004004100270000009510510009c000000000104201900000004043001bf0000094c0510009c000000000304201900000020041002700000094c0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000009510640009c000025020000213d0000000105500190000025020000c13d000000400040043f000000020430003900000000044104360000002105300039000000050550027200001ea70000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00001e9f0000413d000000000500004b00001ea90000613d0000000005010433000000000505004b000025080000613d00000000050404330000095805500197000000f806300210000000000556019f0000095a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000002103100039000000000023043500001ed70000013d000000400100043d000009570310009c000025020000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00001ec40000413d0000000004010433000000000404004b000025080000613d000000f8042002100000095005000041000000000202004b0000000002040019000000000205601900000000040304330000095804400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c00001f280000413d0000008003200270000009590420009c000000000302a019000009590420009c0000000004000019000000100400203900000008054001bf000009510630009c00000000040520190000004005300270000009510630009c000000000305201900000004054001bf0000094c0630009c000000000405201900000020053002700000094c0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000009510750009c000025020000213d0000000106600190000025020000c13d000000400050043f000000020540003900000000055304360000002106400039000000050660027200001f150000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b00001f0d0000413d000000000600004b00001f170000613d0000000006030433000000000606004b000025080000613d00000000060504330000095806600197000000f807400210000000000667019f0000095a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c00000000020020190000002104300039000000000024043500001f450000013d000000400300043d000009570430009c000025020000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a00001f320000413d0000000005030433000000000505004b000025080000613d000000f8052002100000095006000041000000000202004b0000000002050019000000000206601900000000050404330000095805500197000000000225019f00000000002404350000000402000029000000c0022000390000000202200367000000000202043b000000800420008c00001f960000413d0000008004200270000009590520009c000000000402a019000009590520009c0000000005000019000000100500203900000008065001bf000009510740009c00000000050620190000004006400270000009510740009c000000000406201900000004065001bf0000094c0740009c000000000506201900000020064002700000094c0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000009510860009c000025020000213d0000000107700190000025020000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200001f830000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00001f7b0000413d000000000700004b00001f850000613d0000000007040433000000000707004b000025080000613d00000000070604330000095807700197000000f808500210000000000778019f0000095a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500001fb30000013d000000400400043d000009570540009c000025020000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00001fa00000413d0000000006040433000000000606004b000025080000613d000000f8062002100000095007000041000000000202004b0000000002060019000000000207601900000000060504330000095806600197000000000226019f00000000002504350000000402000029000000a0022000390000000202200367000000000202043b000000800520008c000020040000413d0000008005200270000009590620009c000000000502a019000009590620009c0000000006000019000000100600203900000008076001bf000009510850009c00000000060720190000004007500270000009510850009c000000000507201900000004076001bf0000094c0850009c000000000607201900000020075002700000094c0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000009510970009c000025020000213d0000000108800190000025020000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200001ff10000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00001fe90000413d000000000800004b00001ff30000613d0000000008050433000000000808004b000025080000613d00000000080704330000095808800197000000f809600210000000000889019f0000095a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000020210000013d000000400500043d000009570650009c000025020000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a0000200e0000413d0000000007050433000000000707004b000025080000613d000000f8072002100000095008000041000000000202004b0000000002070019000000000208601900000000070604330000095807700197000000000227019f0000000000260435000000040200002900000060022000390000000202200367000000000202043b000000800620008c000020720000413d0000008006200270000009590720009c000000000602a019000009590720009c0000000007000019000000100700203900000008087001bf000009510960009c00000000070820190000004008600270000009510960009c000000000608201900000004087001bf0000094c0960009c000000000708201900000020086002700000094c0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000009510a80009c000025020000213d0000000109900190000025020000c13d000000400080043f00000002087000390000000008860436000000210970003900000005099002720000205f0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000020570000413d000000000900004b000020610000613d0000000009060433000000000909004b000025080000613d00000000090804330000095809900197000000f80a70021000000000099a019f0000095a0990004100000000009804350000000307700210000000f80770008900000000027201cf000000ff0770008c0000000002002019000000210760003900000000002704350000208f0000013d000000400600043d000009570760009c000025020000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a0000207c0000413d0000000008060433000000000808004b000025080000613d000000f8082002100000095009000041000000000202004b0000000002080019000000000209601900000000080704330000095808800197000000000228019f0000000000270435000000400700043d000009570270009c000025020000213d000000040a0000290000004002a000390000000202200367000000000202043b0000004008700039000000400080043f00000020087000390000095b090000410000000000980435000000150800003900000000008704350000002108700039000000600220021000000000002804350000012002a000390000000202200367000000000202043b000000800820008c000020f00000413d0000008008200270000009590920009c000000000802a019000009590920009c00000000090000190000001009002039000000080a9001bf000009510b80009c00000000090a2019000000400a800270000009510b80009c00000000080a2019000000040a9001bf0000094c0b80009c00000000090a2019000000200a8002700000094c0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000009510ca0009c000025020000213d000000010bb00190000025020000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000020dd0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b000020d50000413d000000000b00004b000020df0000613d000000000b080433000000000b0b004b000025080000613d000000000b0a0433000009580bb00197000000f80c900210000000000bbc019f0000095a0bb000410000000000ba04350000000309900210000000f80990008900000000029201cf000000ff0990008c0000000002002019000000210980003900000000002904350000210d0000013d000000400800043d000009570980009c000025020000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000020fa0000413d000000000a080433000000000a0a004b000025080000613d000000f80a200210000009500b000041000000000202004b00000000020a001900000000020b6019000000000a090433000009580aa0019700000000022a019f0000000000290435000000400200043d0000002009200039000000000a010433000000000b0a004b0000211a0000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b000021130000413d00000000019a001900000000000104350000000009030433000000000a09004b000021270000613d000000000a000019000000000b1a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b9a004b000021200000413d000000000119001900000000000104350000000003040433000000000903004b000021340000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b0000212d0000413d000000000113001900000000000104350000000003050433000000000403004b000021410000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000934004b0000213a0000413d000000000113001900000000000104350000000003060433000000000403004b0000214e0000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000534004b000021470000413d000000000113001900000000000104350000000003070433000000000403004b0000215b0000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b000021540000413d000000000113001900000000000104350000000003080433000000000403004b000021680000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000534004b000021610000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b00000000010000190000000101004039000009510350009c000025020000213d0000000101100190000025020000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000095009000041000000000a16004b000000000a000019000000000a0980190000095001100197000009500b600197000000000c1b004b000000000900801900000000011b013f000009500110009c00000000010a00190000000001096019000000000101004b000025000000c13d00000004010000290000000001160019000000000617034f000000000606043b000009510960009c000025000000213d000000000968004900000020081000390000095001000041000000000a98004b000000000a000019000000000a0120190000095009900197000009500b800197000000000c9b004b000000000100801900000000099b013f000009500990009c00000000010ac019000000000101004b000025000000c13d000000010160008c000021c50000c13d000000000187034f000000000101043b000000010300008a0000095006000041000000000331004b000000000300001900000000030620190000095001100197000009500710009c00000000060080190000095001100167000009500110009c000000000103001900000000010660190000006006000039000000000101004b000022110000c13d000009570150009c000025020000213d0000004001500039000000400010043f00000020015000390000095a030000410000000000310435000000010100003900000000001504350000000006050019000022110000013d000000380160008c000021f70000413d00000020016002700000094c0360009c000000000306001900000000030120190000094c0160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009570350009c000025020000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a000021e00000413d0000000001050433000000000101004b000025080000613d00000000010804330000095801100197000000f803700210000000000113019f0000095c011001c700000000001804350000000301700210000000f80110008900000000011601cf000000210350003900000000001304350000000006050019000022110000013d000009570150009c000025020000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a000022000000413d0000000001050433000000000101004b000025080000613d000000f80160021000000000030704330000095803300197000000000113019f000009500110016700000000001704350000000006050019000000400500043d000009570150009c000025020000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a0000221c0000413d0000000001050433000000000101004b000025080000613d000000000107043300000958011001970000095d011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b000009500c000041000000000d1b004b000000000d000019000000000d0c80190000095001100197000009500eb00197000000000f1e004b000000000c00801900000000011e013f000009500110009c00000000010d001900000000010c6019000000000101004b000025000000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b000009510cb0009c000025000000213d000000000cb8004900000020081000390000095001000041000000000dc8004b000000000d000019000000000d012019000009500cc00197000009500e800197000000000fce004b0000000001008019000000000cce013f000009500cc0009c00000000010dc019000000000101004b000025000000c13d0000002001b0008c000025000000413d000000000187034f000000000801043b000000800180008c000022a60000413d0000008001800270000009590780009c000000000108a019000009590780009c00000000070000190000001007002039000000080b7001bf000009510c10009c00000000070b2019000000400b100270000009510c10009c00000000010b2019000000040b7001bf0000094c0c10009c00000000070b2019000000200b1002700000094c0c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c004039000009510d10009c000025020000213d000000010cc00190000025020000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d100272000022920000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b0000228a0000413d000000000100004b000022940000613d0000000001070433000000000101004b000025080000613d00000000010c04330000095801100197000000f803b00210000000000113019f0000095a0110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c0000000001030019000000000100201900000021037000390000000000130435000022c20000013d000000400700043d000009570170009c000025020000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a000022b00000413d0000000001070433000000000101004b000025080000613d000000f8018002100000095003000041000000000808004b000000000103601900000000030b04330000095803300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000095003000041000000000d1b004b000000000d000019000000000d0380190000095001100197000009500eb00197000000000f1e004b000000000300801900000000011e013f000009500110009c00000000010d00190000000001036019000000000101004b000025000000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000095101d0009c000025000000213d0000000001dc00490000002003b00039000009500c000041000000000e13004b000000000e000019000000000e0c201900000950011001970000095003300197000000000f13004b000000000c008019000000000113013f000009500110009c00000000010e001900000000010c6019000000000101004b000025000000c13d0000004001d0008c000025000000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c0000233e0000413d0000008001b002700000095903b0009c00000000010ba0190000095903b0009c0000000003000019000000100300203900000008083001bf000009510c10009c00000000030820190000004008100270000009510c10009c000000000108201900000004083001bf0000094c0c10009c000000000308201900000020081002700000094c0c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d004039000009510310009c000025020000213d0000000103d00190000025020000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e1002720000232a0000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b000023220000413d000000000100004b0000232c0000613d0000000001080433000000000101004b000025080000613d00000000010d04330000095801100197000000f803c00210000000000113019f0000095a0110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c00000000010300190000000001002019000000210380003900000000001304350000235a0000013d000000400800043d000009570180009c000025020000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a000023480000413d0000000001080433000000000101004b000025080000613d000000f801b00210000009500300004100000000090b004b000000000103601900000000030c04330000095803300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b000009500300004100000000091a004b000000000900001900000000090380190000095001100197000009500da00197000000000e1d004b000000000300801900000000011d013f000009500110009c00000000010900190000000001036019000000000101004b000025000000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000095101d0009c000025000000213d0000000001dc00490000002003a000390000095009000041000000000c13004b000000000c000019000000000c09201900000950011001970000095003300197000000000e13004b0000000009008019000000000113013f000009500110009c00000000010c00190000000001096019000000000101004b000025000000c13d0000004101d0008c000025080000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c9000009500c000041000000000101043b000000f8011002700000001b0310008c000023950000613d000000000b000415000000050bb0008a000000200bb000c90000095f0c0000410000001c0110008c0000250e0000c13d000000400a00043d0000095701a0009c000025020000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a0000239f0000413d00000000010a0433000000000101004b000025080000613d00000000010d043300000958011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b000009500300004100000000091f004b000000000900001900000000090380190000095001100197000009500cf00197000000000d1c004b000000000300801900000000011c013f000009500110009c00000000010900190000000001036019000000000101004b000025000000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000095103e0009c000025000000213d0000000003eb004900000020011000390000095009000041000000000b31004b000000000b000019000000000b09201900000950033001970000095001100197000000000f31004b0000000009008019000000000131013f000009500110009c00000000010b00190000000001096019000000000101004b000025000000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a04330000000001310019000009510c1001970000003801c0008c000024180000413d0000002001c002700000094c03c0009c00000000030c001900000000030120190000094c01c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095703b0009c000025020000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a000024020000413d00000000010b0433000000000101004b000025080000613d00000000010d04330000095801100197000000f803900210000000000113019f0000095e011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b000390000000000130435000024320000013d000000400b00043d0000095701b0009c000025020000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a000024220000413d00000000010b0433000000000101004b000025080000613d000000f801c0021000000000030904330000095803300197000000000131019f0000095d011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000095009000041000000000d13004b000000000d000019000000000d0980190000095001100197000009500e300197000000000f1e004b000000000900801900000000011e013f000009500110009c00000000010d00190000000001096019000000000101004b000025000000c13d00000004010000290000000001130019000000000314034f000000000903043b000009510390009c000025000000213d00000000039c0049000000200c100039000009500100004100000000043c004b000000000400001900000000040120190000095003300197000009500dc00197000000000e3d004b000000000100801900000000033d013f000009500330009c000000000104c019000000000101004b000025000000c13d000000400300043d00000020043000390000096001000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b0000246c0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b000024650000413d000000000bde001900000000000b0435000000000d02043300000000010d004b000024790000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b000024720000413d0000000002bd00190000000000020435000000000b06043300000000010b004b000024860000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b0000247f0000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c900272000024950000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b0000248d0000413d000000000106004b000024a40000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b000024b10000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b000024aa0000413d0000000002260019000000000002043500000000050a0433000000000105004b000024be0000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b000024b70000413d000000000225001900000000000204350000000005070433000000000105004b000024cb0000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b000024c40000413d000000000225001900000000000204350000000005080433000000000105004b000024d80000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b000024d10000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b00000000020000190000000102004039000009510410009c000025020000213d0000000102200190000025020000c13d000000400010043f0000094c0100004100000004040000290000094c0240009c00000000020100190000000002044019000000400220021000000000030304330000094c0430009c00000000030180190000006003300210000000000223019f00000000030004140000094c0430009c0000000001034019000000c001100210000000000121019f00000960011001c70000801002000039252a25200000040f0000000102200190000025000000613d000000000101043b000000000001042d00000000010000190000252c000104300000096f0100004100000000001004350000004101000039000000040010043f00000970010000410000252c000104300000096f0100004100000000001004350000003201000039000000040010043f00000970010000410000252c00010430000000400100043d00000044021000390000096e03000041000000000032043500000024021000390000000f030000390000000000320435000009530200004100000000002104350000000402100039000000200300003900000000003204350000094c020000410000094c0310009c0000000001028019000000400110021000000954011001c70000252c0001043000002523002104230000000102000039000000000001042d0000000002000019000000000001042d00002528002104230000000102000039000000000001042d0000000002000019000000000001042d0000252a000004320000252b0001042e0000252c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000ebe4a3d7000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff456e636f64696e6720756e737570706f7274656420747800000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f1901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f8080000000000000000000000000000000000000000000000000000000000000496e76616c696420762076616c756500000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000000000400000000000000000000000004f766572666c6f77000000000000000000000000000000000000000000000000556e737570706f72746564207478207479706500000000000000000000000000ff4bcc7073c02d04d7aa092c8313464e6dd8157d2b32630ed88836adf7358aaf", + "bytecode": "0x0004000000000002000d00000000000200000000030100190000006003300270000009480430019700030000004103550002000000010355000009480030019d000100000000001f000000800a0000390000004000a0043f0000000101200190000000910000c13d0000000001000031000000040110008c0000083e0000413d0000000201000367000000000101043b0000094a011001970000094b0110009c0000083e0000c13d0000000001000416000000000101004b0000083e0000c13d0000000001000031000000040310008a0000094c02000041000000200430008c000000000400001900000000040240190000094c05300197000000000605004b000000000200a0190000094c0550009c000000000204c019000000000202004b0000083e0000c13d00000002020003670000000404200370000000000904043b0000094d0490009c0000083e0000213d00000000039300490000094c04000041000002600530008c000000000500001900000000050440190000094c03300197000000000603004b000000000400a0190000094c0330009c00000000030500190000000003046019000000000303004b0000083e0000c13d0000000403900039000d00000003001d000000000332034f000000000303043b000000000403004b000000990000c13d000c00000009001d0000010401900039000000000112034f000000000101043b000000800210008c000000d70000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f00000002032000390000000b090000290000000003390436000000210420003900000005044002720000007d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000750000413d000000000400004b0000007f0000613d0000000004090433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000001bc0000013d0000000001000416000000000101004b0000083e0000c13d00000020010000390000010000100443000001200000044300000949010000410000251d0001042e000000710430008c000000e10000c13d000001c403900039000000000332034f000000230400008a0000000004940049000b00000004001d0000000004140019000000000303043b0000094c05000041000000000643004b000000000600001900000000060580190000094c044001970000094c07300197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000003430019000000000232034f000000000202043b0000094d0420009c0000083e0000213d000000000121004900000020033000390000094c04000041000000000513004b000000000500001900000000050420190000094c011001970000094c06300197000000000716004b0000000004008019000000000116013f0000094c0110009c00000000010500190000000001046019000000000101004b0000083e0000c13d00000000010004140000000004320019000000000224004b0000000002000019000000010200403900000948033001970000000102200190000000d10000c13d0000000002000031000000000542004b0000041b0000813d000009700100004100000000001004350000001101000039000000040010043f00000971010000410000251e00010430000000400200043d000b00000002001d000009530220009c0000013e0000a13d000009700100004100000000001004350000004101000039000000040010043f00000971010000410000251e00010430000000020130008c000001560000c13d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039000c00000009001d251c25120000040f00000001022001900000083e0000613d000000000201043b000000800120008c0000028d0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000012b0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001230000413d000000000500004b0000012d0000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000002aa0000013d0000000b070000290000004002700039000000400020043f0000000102000039000000000227043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000001460000413d0000000003070433000000000303004b000001b30000c13d000009700100004100000000001004350000003201000039000000040010043f00000971010000410000251e00010430000000010130008c0000020d0000c13d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039000c00000009001d251c25120000040f00000001022001900000083e0000613d000000000201043b000000800120008c000002fb0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001a00000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001980000413d000000000500004b000001a20000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000003180000013d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f00000000001204350000000c01000029000000a4011000390000000201100367000000000201043b000000800120008c0000021f0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001fa0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001f20000413d000000000500004b000001fc0000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000023c0000013d000000400100043d00000044021000390000094e0300004100000000003204350000002402100039000000170300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002290000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000c0200002900000064022000390000000202200367000000000302043b000000800230008c000003690000413d0000008002300270000009550430009c000000000203a019000009550430009c0000000004000019000000100400203900000008054001bf0000094d0620009c000000000405201900000040052002700000094d0620009c000000000205201900000004054001bf000009480620009c00000000040520190000002005200270000009480620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f00000002054000390000000005520436000000210640003900000005066002720000027a0000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000002720000413d000000000600004b0000027c0000613d0000000006020433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000003860000013d000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002970000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000302043b000000800230008c000004320000413d0000008002300270000009550430009c000000000203a019000009550430009c0000000004000019000000100400203900000008054001bf0000094d0620009c000000000405201900000040052002700000094d0620009c000000000205201900000004054001bf000009480620009c00000000040520190000002005200270000009480620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000002e80000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000002e00000413d000000000600004b000002ea0000613d0000000006020433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c0000000003002019000000210420003900000000003404350000044f0000013d000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000003050000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000202043b000000800320008c0000068b0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000003560000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000034e0000413d000000000600004b000003580000613d0000000006030433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000006a80000013d000000400200043d000009530420009c000000db0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000003730000413d0000000005020433000000000505004b000001500000613d000000f8053002100000094c06000041000000000303004b0000000003050019000000000306601900000000050404330000095405500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000003940000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b0000038d0000413d000000000134001900000000000104350000000003020433000000000403004b000003a10000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b0000039a0000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d0000094d0220009c000000db0000213d0000000101100190000000db0000c13d0000000901000029000000400010043f000009530110009c000000db0000213d0000000c0400002900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f0000002002500039000009570300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000007f00000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f00000002032000390000000704000029000000000334043600000021042000390000000504400272000004060000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000003fe0000413d000000000400004b000004080000613d00000007040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000070200002900000021022000390000000000120435000008100000013d000a0000000a001d000c00000009001d00000002033003670000095d0510009c000004a00000413d000000400100043d00000044021000390000096f0300004100000000003204350000002402100039000000080300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000400200043d000009530420009c000000db0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a0000043c0000413d0000000005020433000000000505004b000001500000613d000000f8053002100000094c06000041000000000303004b0000000003050019000000000306601900000000050404330000095405500197000000000335019f00000000003404350000000c03000029000000c4033000390000000203300367000000000303043b000000800430008c000007140000413d0000008004300270000009550530009c000000000403a019000009550530009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c000000db0000213d0000000107700190000000db0000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000048d0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000004850000413d000000000700004b0000048f0000613d0000000007040433000000000707004b000001500000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c000000000300201900000021054000390000000000350435000007310000013d0000000002420049000009480220019700000000022303df000000c0011002100000095e011001970000095f011001c700000000011203af0000801002000039251c25170000040f00000000030100190000006003300270000109480030019d000009480330019700030000000103550000000102200190000006f90000613d0000003f013000390000096001100197000000400200043d0000000001120019000000000421004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f00000000013204360000001f043000390000000504400272000004cb0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004c30000413d000000000400004b000004cd0000613d0000000104000031000000000443004b0000083e0000213d00000003050003670000001f0430018f0000000503300272000004dd0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000004d50000413d000000000604004b000004ec0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e570000c13d00000000040000310000000b0200002900000000052400190000000c0200002900000204032000390000000202000367000000000332034f000000000303043b0000094c06000041000000000753004b000000000700001900000000070680190000094c055001970000094c08300197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000505004b0000083e0000c13d0000000001010433000900000001001d0000000d010000290000000001130019000000000312034f000000000503043b0000094d0350009c0000083e0000213d0000000503500210000000000434004900000020061000390000094c01000041000000000746004b000000000700001900000000070120190000094c044001970000094c08600197000000000948004b0000000001008019000000000448013f0000094c0440009c000000000107c019000000000101004b0000083e0000c13d000000400100043d000000200410003900000961055001980000052b0000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000005230000413d000000000200004b0000052d0000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b000000000300001900000001030040390000094d0520009c000000db0000213d0000000103300190000000db0000c13d000000400020043f0000094802000041000009480340009c0000000003020019000000000304401900000040033002100000000001010433000009480410009c00000000010280190000006001100210000000000131019f0000000003000414000009480430009c0000000002034019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c030000290000083e0000613d00000000020000310000000b04000029000000000542001900000224043000390000000203000367000000000443034f000000000404043b0000094c06000041000000000754004b000000000700001900000000070680190000094c055001970000094c08400197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000101043b000b00000001001d000000000105004b0000083e0000c13d0000000d010000290000000004140019000000000143034f000000000101043b0000094d0310009c0000083e0000213d000000000212004900000020034000390000094c04000041000000000523004b000000000500001900000000050420190000094c022001970000094c06300197000000000726004b0000000004008019000000000226013f0000094c0220009c00000000020500190000000002046019000000000202004b0000083e0000c13d0000000002000414000000000131001a0000094804300197000000d10000413d0000000003000031000000000513004b000000d10000413d0000000204400367000009480520009c000004200000213d0000000001130049000009480110019700000000011403df000000c0022002100000095e022001970000095f022001c700000000012103af0000801002000039251c25170000040f00000000030100190000006003300270000109480030019d00000948033001970003000000010355000000010220019000000ff30000613d0000003f013000390000096001100197000000400200043d0000000001120019000000000421004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f00000000013204360000001f043000390000000504400272000005b10000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000005a90000413d000000000400004b000005b30000613d0000000104000031000000000443004b0000083e0000213d00000003050003670000001f0430018f0000000503300272000005c30000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000005bb0000413d000000000604004b000005d20000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e570000c13d0000000c0b0000290000006402b000390000000203000367000000000523034f0000004402b00039000000000423034f0000002402b00039000000000623034f0000008402b00039000000a407b00039000000c408b00039000000e409b00039000001040ab00039000001240bb00039000000000bb3034f000000000aa3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000d02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000a0a043b000000000b0b043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c1000390000000b0d0000290000000000dc0435000001800c100039000000090d0000290000000000dc0435000001600c1000390000000000bc0435000001400b1000390000000000ab0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000962030000410000000000320435000001c0030000390000000000310435000009630310009c000000db0000213d000001e003100039000000400030043f0000094803000041000009480420009c000000000203801900000040022002100000000001010433000009480410009c00000000010380190000006001100210000000000121019f0000000002000414000009480420009c0000000002038019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000101043b000900000001001d000000400100043d000b00000001001d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f0000000a0400002900000001022001900000083e0000613d0000000b050000290000002002500039000000000101043b00000964030000410000000000320435000000800350003900000000001304350000006001500039000009650300004100000000003104350000004001500039000009660300004100000000003104350000000000450435000009670150009c000000db0000213d0000000b04000029000000a001400039000000400010043f0000094801000041000009480320009c000000000201801900000040022002100000000003040433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000301043b000000400100043d0000004202100039000000090400002900000000004204350000002002100039000009680400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000009690310009c000000db0000213d0000008003100039000000400030043f0000094803000041000009480420009c000000000203801900000040022002100000000001010433000009480410009c00000000010380190000006001100210000000000121019f0000000002000414000009480420009c0000000002038019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b00002900000daa0000c13d0000083e0000013d000000400300043d000009530430009c000000db0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006950000413d0000000005030433000000000505004b000001500000613d000000f8052002100000094c06000041000000000202004b0000000002050019000000000206601900000000050404330000095405500197000000000225019f00000000002404350000000c02000029000000a4022000390000000202200367000000000202043b000000800420008c000007820000413d0000008004200270000009550520009c000000000402a019000009550520009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c000000db0000213d0000000107700190000000db0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000006e60000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000006de0000413d000000000700004b000006e80000613d0000000007040433000000000707004b000001500000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000079f0000013d0000001f0430018f0000000502300272000007040000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000006fd0000413d000000000504004b000007120000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000251e00010430000000400400043d000009530540009c000000db0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000071e0000413d0000000006040433000000000606004b000001500000613d000000f8063002100000094c07000041000000000303004b0000000003060019000000000307601900000000060504330000095406600197000000000336019f00000000003504350000000c03000029000000a4033000390000000203300367000000000303043b000000800530008c000008400000413d0000008005300270000009550630009c000000000503a019000009550630009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c000000db0000213d0000000108800190000000db0000c13d000000400070043f00000002076000390000000007750436000000210860003900000005088002720000076f0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000007670000413d000000000800004b000007710000613d0000000008050433000000000808004b000001500000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c0000000003002019000000210650003900000000003604350000085d0000013d000000400400043d000009530540009c000000db0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000078c0000413d0000000006040433000000000606004b000001500000613d000000f8062002100000094c07000041000000000202004b0000000002060019000000000207601900000000060504330000095406600197000000000226019f00000000002504350000000c0200002900000064022000390000000202200367000000000202043b000000800520008c000008ae0000413d0000008005200270000009550620009c000000000502a019000009550620009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c000000db0000213d0000000108800190000000db0000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000007dd0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000007d50000413d000000000800004b000007df0000613d0000000008050433000000000808004b000001500000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000008cb0000013d000000400200043d000700000002001d000009530220009c000000db0000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000007fc0000413d00000007030000290000000003030433000000000303004b000001500000613d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f0000000000120435000000230100008a0000000c020000290000000004210049000001c4012000390000000202000367000600000001001d000000000112034f000000000101043b0000000003000031000500000004001d00000000044300190000094c05000041000000000641004b000000000600001900000000060580190000094c044001970000094c07100197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000004410019000000000142034f000000000101043b0000094d0510009c0000083e0000213d000000000513004900000020034000390000094c04000041000000000653004b000000000600001900000000060420190000094c055001970000094c07300197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b000009aa0000613d00000000010000190000251e00010430000000400500043d000009530650009c000000db0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a0000084a0000413d0000000007050433000000000707004b000001500000613d000000f8073002100000094c08000041000000000303004b0000000003070019000000000308601900000000070604330000095407700197000000000337019f00000000003604350000000c0300002900000064033000390000000203300367000000000303043b000000800630008c0000092c0000413d0000008006300270000009550730009c000000000603a019000009550730009c0000000007000019000000100700203900000008087001bf0000094d0960009c000000000708201900000040086002700000094d0960009c000000000608201900000004087001bf000009480960009c00000000070820190000002008600270000009480960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b000000000900001900000001090040390000094d0a80009c000000db0000213d0000000109900190000000db0000c13d000000400080043f00000002087000390000000008860436000000210970003900000005099002720000089b0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000008930000413d000000000900004b0000089d0000613d0000000009060433000000000909004b000001500000613d00000000090804330000095409900197000000f80a70021000000000099a019f000009560990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c000000000300201900000021076000390000000000370435000009490000013d000000400500043d000009530650009c000000db0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000008b80000413d0000000007050433000000000707004b000001500000613d000000f8072002100000094c08000041000000000202004b0000000002070019000000000208601900000000070604330000095407700197000000000227019f0000000000260435000000400600043d000009530260009c000000db0000213d0000000c0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f0000002007600039000009570800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c000009cb0000413d0000008007200270000009550820009c000000000702a019000009550820009c0000000008000019000000100800203900000008098001bf0000094d0a70009c000000000809201900000040097002700000094d0a70009c000000000709201900000004098001bf000009480a70009c00000000080920190000002009700270000009480a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a0040390000094d0b90009c000000db0000213d000000010aa00190000000db0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa00272000009190000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b000009110000413d000000000a00004b0000091b0000613d000000000a070433000000000a0a004b000001500000613d000000000a090433000009540aa00197000000f80b800210000000000aab019f000009560aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c000000000200201900000021087000390000000000280435000009e80000013d000000400600043d000009530760009c000000db0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000009360000413d0000000008060433000000000808004b000001500000613d000000f8083002100000094c09000041000000000303004b0000000003080019000000000309601900000000080704330000095408800197000000000338019f0000000000370435000000400700043d000009530370009c000000db0000213d0000000c0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f000000200870003900000957090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000ac60000413d0000008008300270000009550930009c000000000803a019000009550930009c00000000090000190000001009002039000000080a9001bf0000094d0b80009c00000000090a2019000000400a8002700000094d0b80009c00000000080a2019000000040a9001bf000009480b80009c00000000090a2019000000200a800270000009480b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b0040390000094d0ca0009c000000db0000213d000000010bb00190000000db0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000009970000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b0000098f0000413d000000000b00004b000009990000613d000000000b080433000000000b0b004b000001500000613d000000000b0a0433000009540bb00197000000f80c900210000000000bbc019f000009560bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000ae30000013d000000010410008c00000a900000c13d000000000132034f000000000101043b000000010200008a0000094c03000041000000000221004b000000000200001900000000020320190000094c011001970000094c0410009c00000000030080190000094c011001670000094c0110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b00000bb50000c13d000000400100043d000400000001001d000009530110009c000000db0000213d00000004030000290000004001300039000000400010043f0000002001300039000009560200004100000000002104350000000101000039000000000013043500000bb50000013d000000400700043d000009530870009c000000db0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000009d50000413d0000000009070433000000000909004b000001500000613d000000f8092002100000094c0a000041000000000202004b000000000209001900000000020a601900000000090804330000095409900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b000009f50000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b000009ee0000413d000000000189001900000000000104350000000008030433000000000908004b00000a020000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b000009fb0000413d000000000118001900000000000104350000000003040433000000000803004b00000a0f0000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b00000a080000413d000000000113001900000000000104350000000003050433000000000403004b00000a1c0000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b00000a150000413d000000000113001900000000000104350000000003060433000000000403004b00000a290000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b00000a220000413d000000000113001900000000000104350000000003070433000000000403004b00000a360000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b00000a2f0000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f03100039000000200100008a000000000313016f0000000005230019000000000335004b000000000300001900000001030040390000094d0450009c000000db0000213d0000000103300190000000db0000c13d000000400050043f000000230300008a0000000c060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b000000000800003100000000094800190000094c0a000041000000000b96004b000000000b000019000000000b0a80190000094c099001970000094c0c600197000000000d9c004b000000000a00801900000000099c013f0000094c0990009c00000000090b001900000000090a6019000000000909004b0000083e0000c13d0000000d090000290000000009960019000000000697034f000000000606043b0000094d0a60009c0000083e0000213d000000000a68004900000020089000390000094c09000041000000000ba8004b000000000b000019000000000b0920190000094c0aa001970000094c0c800197000000000dac004b0000000009008019000000000aac013f0000094c0aa0009c00000000090bc019000000000909004b0000083e0000c13d000000010960008c00000e690000c13d000000000687034f000000000606043b000000010700008a0000094c08000041000000000776004b000000000700001900000000070820190000094c066001970000094c0960009c00000000080080190000094c066001670000094c0660009c00000000070860190000006006000039000000000707004b00000ee70000c13d000009530650009c000000db0000213d0000004006500039000000400060043f00000020065000390000095607000041000000000076043500000001060000390000000000650435000000000605001900000ee70000013d000000380210008c00000b980000413d0000002002100270000009480310009c00000000030100190000000003022019000009480210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000009530440009c000000db0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000aae0000413d00000004040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f00000958044001c700000000004304350000000302200210000000f80220008900000000012101cf00000004020000290000002102200039000000000012043500000bb50000013d000000400800043d000009530980009c000000db0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000ad00000413d000000000a080433000000000a0a004b000001500000613d000000f80a3002100000094c0b000041000000000303004b00000000030a001900000000030b6019000000000a090433000009540aa0019700000000033a019f0000000000390435000000400300043d0000002009300039000000000a010433000000000b0a004b00000af00000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b00000ae90000413d00000000019a001900000000000104350000000009020433000000000a09004b00000afd0000613d000000000a000019000000000b1a0019000000200aa00039000000000c2a0019000000000c0c04330000000000cb0435000000000b9a004b00000af60000413d000000000119001900000000000104350000000002040433000000000902004b00000b0a0000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a29004b00000b030000413d000000000112001900000000000104350000000002050433000000000402004b00000b170000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000924004b00000b100000413d000000000112001900000000000104350000000002060433000000000402004b00000b240000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000524004b00000b1d0000413d000000000112001900000000000104350000000002070433000000000402004b00000b310000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000b2a0000413d000000000112001900000000000104350000000002080433000000000402004b00000b3e0000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000524004b00000b370000413d000000000112001900000000000104350000000001310049000000200210008a00000000002304350000001f02100039000000200100008a000000000212016f0000000005320019000000000225004b000000000200001900000001020040390000094d0450009c000000db0000213d0000000102200190000000db0000c13d000000400050043f000000230200008a0000000c060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b000000000800003100000000094800190000094c0a000041000000000b96004b000000000b000019000000000b0a80190000094c099001970000094c0c600197000000000d9c004b000000000a00801900000000099c013f0000094c0990009c00000000090b001900000000090a6019000000000909004b0000083e0000c13d0000000d090000290000000009960019000000000697034f000000000606043b0000094d0a60009c0000083e0000213d000000000a68004900000020089000390000094c09000041000000000ba8004b000000000b000019000000000b0920190000094c0aa001970000094c0c800197000000000dac004b0000000009008019000000000aac013f0000094c0aa0009c00000000090bc019000000000909004b0000083e0000c13d000000010960008c00000e9b0000c13d000000000687034f000000000606043b000000010700008a0000094c08000041000000000776004b000000000700001900000000070820190000094c066001970000094c0960009c00000000080080190000094c066001670000094c0660009c00000000070860190000006006000039000000000707004b00000f7a0000c13d000009530650009c000000db0000213d0000004006500039000000400060043f00000020065000390000095607000041000000000076043500000001060000390000000000650435000000000605001900000f7a0000013d000000400200043d000400000002001d000009530220009c000000db0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000ba40000413d00000004030000290000000003030433000000000303004b000001500000613d000000f80110021000000000030204330000095403300197000000000113019f0000094c01100167000000000012043500000060010000390000000c0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b00000c2a0000c13d0000000603000029000000000432034f000000000300003100000005050000290000000005530019000000000904043b0000094c04000041000000000659004b000000000600001900000000060480190000094c055001970000094c07900197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b0000083e0000c13d0000000b0400002900000000040404330000000a0500002900000000050504330000000906000029000000000606043300000007070000290000000007070433000000040800002900000000080804330000000d0a0000290000000009a90019000000000292034f000000000202043b0000094d0a20009c0000083e0000213d000000000323004900000020099000390000094c0a000041000000000b39004b000000000b000019000000000b0a20190000094c033001970000094c09900197000000000c39004b000000000a008019000000000339013f0000094c0330009c00000000030b001900000000030a6019000000000303004b0000083e0000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000094d02200197000000380320008c00000cc20000413d0000002003200270000009480420009c00000000040200190000000004032019000009480320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009530650009c000000db0000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a00000c140000413d0000000006050433000000000606004b000001500000613d00000000060404330000095406600197000000f807300210000000000667019f0000095a066001c700000000006404350000000303300210000000f80330008900000000023201cf0000002103500039000000000023043500000cdc0000013d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f00000001022001900000083e0000613d000000000101043b000000800210008c00000c840000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000804000029000000000442016f000000400200043d0000000004420019000000000524004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f000000020430003900000000044204360000002105300039000000050550027200000c710000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00000c690000413d000000000500004b00000c730000613d0000000005020433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c00000000010020190000002103200039000000000013043500000ca10000013d000000400200043d000009530320009c000000db0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000c8e0000413d0000000004020433000000000404004b000001500000613d000000f8041002100000094c05000041000000000101004b0000000001040019000000000105601900000000040304330000095404400197000000000114019f0000000000130435000000400100043d00000020031000390000000004020433000000000504004b00000cae0000613d000000000500001900000000063500190000002005500039000000000725001900000000070704330000000000760435000000000645004b00000ca70000413d00000000023400190000096a03000041000000000032043500000000021200490000001e0320008a000000000031043500000021022000390000000803000029000000000332016f0000000002130019000000000332004b000000000300001900000001030040390000094d0420009c000000db0000213d0000000103300190000000db0000c13d000000400020043f000000020200036700000bbd0000013d000000400500043d000009530350009c000000db0000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a00000ccc0000413d0000000004050433000000000404004b000001500000613d000000f80220021000000000040304330000095404400197000000000242019f0000095902200041000000000023043500000000020000310000000503000029000000000632001900000002030003670000000604000029000000000443034f000000000404043b0000094c07000041000000000864004b000000000800001900000000080780190000094c066001970000094c09400197000000000a69004b0000000007008019000000000669013f0000094c0660009c00000000060800190000000006076019000000000606004b0000083e0000c13d0000000d060000290000000006640019000000000363034f000000000403043b0000094d0340009c0000083e0000213d000000000242004900000020066000390000094c03000041000000000726004b000000000700001900000000070320190000094c022001970000094c08600197000000000928004b0000000003008019000000000228013f0000094c0220009c00000000020700190000000002036019000000000202004b0000083e0000c13d000000400200043d00000020032000390000000007050433000000000807004b00000d140000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b00000d0d0000413d000000000537001900000000000504350000000b0b00002900000000070b0433000000000807004b00000d220000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d1b0000413d000000000557001900000000000504350000000a0b00002900000000070b0433000000000807004b00000d300000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d290000413d00000000055700190000000000050435000000090b00002900000000070b0433000000000807004b00000d3e0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d370000413d00000000055700190000000000050435000000070b00002900000000070b0433000000000807004b00000d4c0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d450000413d00000000055700190000000000050435000000040b00002900000000070b0433000000000807004b00000d5a0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d530000413d00000000055700190000001f0740018f00000000000504350000000206600367000000050840027200000d690000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b00000d610000413d000000000907004b00000d780000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b00000d850000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b00000d7e0000413d000000000145001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f0000094801000041000009480430009c000000000301801900000040033002100000000002020433000009480420009c00000000020180190000006002200210000000000232019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b0000290000083e0000613d00000002020003670000000d03000029000000000332034f000000000101043b000c00000001001d000000000103043b000000710310008c0000100e0000c13d000001e401b00039000000000312034f00000000010000310000000004b10049000000230440008a000000000303043b0000094c05000041000000000643004b000000000600001900000000060580190000094c044001970000094c07300197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000003430019000000000232034f000000000202043b0000094d0420009c0000083e0000213d000000000121004900000020033000390000094c04000041000000000513004b000000000500001900000000050420190000094c011001970000094c06300197000000000716004b0000000004008019000000000116013f0000094c0110009c00000000010500190000000001046019000000000101004b0000083e0000c13d0000000001000414000000000232001a0000094804300197000000d10000413d0000000003000031000000000523004b000000d10000413d0000000204400367000009480510009c000004200000213d0000000002230049000009480220019700000000022403df000000c0011002100000095e011001970000095f011001c700000000011203af0000801002000039251c25170000040f00000000030100190000006003300270000109480030019d000009480330019700030000000103550000000102200190000013900000613d0000003f013000390000096002100197000000400100043d0000000002210019000000000412004b000000000400001900000001040040390000094d0520009c000000db0000213d0000000104400190000000db0000c13d000000400020043f00000000023104360000001f04300039000000050440027200000e110000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000e090000413d000000000400004b00000e130000613d0000000104000031000000000443004b0000083e0000213d00000003050003670000001f0430018f000000050330027200000e230000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000e1b0000413d000000000604004b00000e320000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000e570000c13d0000000002020433000000400100043d0000004003100039000000000023043500000020021000390000000c030000290000000000320435000000400300003900000000003104350000096d0310009c000000db0000213d0000006003100039000000400030043f0000094803000041000009480420009c000000000203801900000040022002100000000001010433000009480410009c00000000010380190000006001100210000000000121019f0000000002000414000009480420009c0000000002038019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000101043b000012550000013d000000400100043d00000044021000390000096c03000041000000000032043500000024021000390000001f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000380760008c00000ecd0000413d0000002007600270000009480860009c00000000080600190000000008072019000009480760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009530950009c000000db0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e840000413d0000000009050433000000000909004b000001500000613d00000000090804330000095409900197000000f80a70021000000000099a019f00000958099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000ee70000013d000000380760008c00000f600000413d0000002007600270000009480860009c00000000080600190000000008072019000009480760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009530950009c000000db0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000eb60000413d0000000009050433000000000909004b000001500000613d00000000090804330000095409900197000000f80a70021000000000099a019f00000958099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000f7a0000013d000009530750009c000000db0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000ed60000413d0000000008050433000000000808004b000001500000613d000000f80660021000000000080704330000095408800197000000000668019f0000094c0660016700000000006704350000000006050019000000400500043d000009530750009c000000db0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000ef10000413d0000000009050433000000000909004b000001500000613d0000000009070433000009540990019700000959099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b0000094c0a000041000000000d9c004b000000000d000019000000000d0a80190000094c099001970000094c0ec00197000000000f9e004b000000000a00801900000000099e013f0000094c0990009c00000000090d001900000000090a6019000000000909004b0000083e0000c13d0000000009020433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b0000094d0db0009c0000083e0000213d0000000007b70049000000200cc000390000094c0d000041000000000e7c004b000000000e000019000000000e0d20190000094c077001970000094c0cc00197000000000f7c004b000000000d00801900000000077c013f0000094c0770009c00000000070e001900000000070d6019000000000707004b0000083e0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000094d09700197000000380790008c000010640000413d0000002007900270000009480890009c000000000709a019000009480890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009530b70009c000000db0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000f4a0000413d000000000b070433000000000b0b004b000001500000613d000000000b0a0433000009540bb00197000000f80c800210000000000bbc019f0000095a0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf000000210970003900000000008904350000107d0000013d000009530750009c000000db0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000f690000413d0000000008050433000000000808004b000001500000613d000000f80660021000000000080704330000095408800197000000000668019f0000094c0660016700000000006704350000000006050019000000400500043d000009530750009c000000db0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000f840000413d0000000009050433000000000909004b000001500000613d0000000009070433000009540990019700000959099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b0000094c0a000041000000000d9c004b000000000d000019000000000d0a80190000094c099001970000094c0ec00197000000000f9e004b000000000a00801900000000099e013f0000094c0990009c00000000090d001900000000090a6019000000000909004b0000083e0000c13d0000000009030433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b0000094d0db0009c0000083e0000213d0000000007b70049000000200cc000390000094c0d000041000000000e7c004b000000000e000019000000000e0d20190000094c077001970000094c0cc00197000000000f7c004b000000000d00801900000000077c013f0000094c0770009c00000000070e001900000000070d6019000000000707004b0000083e0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000094d09700197000000380790008c000011250000413d0000002007900270000009480890009c000000000709a019000009480890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009530b70009c000000db0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000fdd0000413d000000000b070433000000000b0b004b000001500000613d000000000b0a0433000009540bb00197000000f80c800210000000000bbc019f0000095a0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf000000210970003900000000008904350000113e0000013d0000001f0430018f000000050230027200000ffe0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000ff70000413d000000000504004b0000100c0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000251e00010430000000000301004b000011200000c13d0000010401b00039000000000112034f000000000101043b000000800210008c000011e10000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f00000002032000390000000b040000290000000003340436000000210420003900000005044002720000104f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000010470000413d000000000400004b000010510000613d0000000b040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000012010000013d000000400700043d000009530a70009c000000db0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a0000106d0000413d000000000a070433000000000a0a004b000001500000613d000000f809900210000000000a080433000009540aa001970000000009a9019f00000959099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b0000094c0a000041000000000b83004b000000000b000019000000000b0a80190000094c088001970000094c0c300197000000000d8c004b000000000a00801900000000088c013f0000094c0880009c00000000080b001900000000080a6019000000000808004b0000083e0000c13d0000000d080000290000000003830019000000000434034f000000000804043b0000094d0480009c0000083e0000213d000000000489004900000020093000390000094c03000041000000000a49004b000000000a000019000000000a0320190000094c044001970000094c0b900197000000000c4b004b000000000300801900000000044b013f0000094c0440009c00000000030ac019000000000303004b0000083e0000c13d000000400300043d00000020043000390000095b0a0000410000000000a40435000000210a300039000000000b070433000000000c0b004b000010b50000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b000010ae0000413d0000000007ab00190000000000070435000000000a020433000000000b0a004b000010c20000613d000000000b000019000000000c7b0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000cab004b000010bb0000413d00000000027a001900000000000204350000000007060433000000000a07004b000010cf0000613d000000000a000019000000000b2a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b000010c80000413d00000000022700190000001f0680018f000000000002043500000002079003670000000509800272000010de0000613d000000000a000019000000050ba00210000000000cb20019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000010d60000413d000000000a06004b000010ed0000613d0000000509900210000000000797034f00000000099200190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000282001900000000000204350000000006050433000000000706004b000010fa0000613d000000000700001900000000082700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000010f30000413d000000000226001900000000000204350000000002320049000000200520008a00000000005304350000001f02200039000000000212016f0000000001320019000000000221004b000000000200001900000001020040390000094d0510009c000000db0000213d0000000102200190000000db0000c13d000000400010043f0000094801000041000009480240009c0000000002010019000000000204401900000040022002100000000003030433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b00002900000daa0000c13d0000083e0000013d000000020210008c000012510000c13d0000000d01000029251c1e500000040f000012550000013d000000400700043d000009530a70009c000000db0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a0000112e0000413d000000000a070433000000000a0a004b000001500000613d000000f809900210000000000a080433000009540aa001970000000009a9019f00000959099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b0000094c0a000041000000000b82004b000000000b000019000000000b0a80190000094c088001970000094c0c200197000000000d8c004b000000000a00801900000000088c013f0000094c0880009c00000000080b001900000000080a6019000000000808004b0000083e0000c13d0000000d080000290000000002820019000000000424034f000000000804043b0000094d0480009c0000083e0000213d000000000489004900000020092000390000094c02000041000000000a49004b000000000a000019000000000a0220190000094c044001970000094c0b900197000000000c4b004b000000000200801900000000044b013f0000094c0440009c00000000020ac019000000000202004b0000083e0000c13d000000400200043d00000020042000390000095c0a0000410000000000a40435000000210a200039000000000b070433000000000c0b004b000011760000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b0000116f0000413d0000000007ab00190000000000070435000000000a030433000000000b0a004b000011830000613d000000000b000019000000000c7b0019000000200bb00039000000000d3b0019000000000d0d04330000000000dc0435000000000cab004b0000117c0000413d00000000037a001900000000000304350000000007060433000000000a07004b000011900000613d000000000a000019000000000b3a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b000011890000413d00000000033700190000001f0680018f0000000000030435000000020790036700000005098002720000119f0000613d000000000a000019000000050ba00210000000000cb30019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000011970000413d000000000a06004b000011ae0000613d0000000509900210000000000797034f00000000099300190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000383001900000000000304350000000006050433000000000706004b000011bb0000613d000000000700001900000000083700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000011b40000413d000000000336001900000000000304350000000003230049000000200530008a00000000005204350000001f03300039000000000313016f0000000001230019000000000331004b000000000300001900000001030040390000094d0510009c000000db0000213d0000000103300190000000db0000c13d000000400010043f0000094801000041000009480340009c0000000003010019000000000304401900000040033002100000000002020433000009480420009c00000000020180190000006002200210000000000232019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b00002900000daa0000c13d0000083e0000013d000000400200043d000b00000002001d000009530220009c000000db0000213d0000000b030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000011ed0000413d0000000b030000290000000003030433000000000303004b000001500000613d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f0000000000120435000000a401b000390000000201100367000000000201043b000000800120008c000012710000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000123e0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000012360000413d000000000500004b000012400000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000128e0000013d000000010110008c000012600000c13d0000000d01000029251c18090000040f000000400200043d00000020032000390000000c04000029000000000043043500000000001204350000094801000041000009480320009c000000000102401900000040011002100000096e011001c70000251d0001042e000000400200043d000d00000002001d0000094f0100004100000000001204350000000401200039251c17ff0000040f0000000d0400002900000000014100490000094802000041000009480310009c0000000001028019000009480340009c000000000204401900000040022002100000006001100210000000000121019f0000251e00010430000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000127b0000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000006402b000390000000202200367000000000302043b000000800230008c000012de0000413d0000008002300270000009550430009c000000000203a019000009550430009c0000000004000019000000100400203900000008054001bf0000094d0620009c000000000405201900000040052002700000094d0620009c000000000205201900000004054001bf000009480620009c00000000040520190000002005200270000009480620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000012cb0000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000012c30000413d000000000600004b000012cd0000613d0000000006020433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000012fb0000013d000000400200043d000009530420009c000000db0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000012e80000413d0000000005020433000000000505004b000001500000613d000000f8053002100000094c06000041000000000303004b0000000003050019000000000306601900000000050404330000095405500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000013090000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b000013020000413d000000000134001900000000000104350000000003020433000000000403004b000013160000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b0000130f0000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d0000094d0220009c000000db0000213d0000000101100190000000db0000c13d0000000901000029000000400010043f000009530110009c000000db0000213d00000000040b001900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f0000002002500039000009570300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000013ab0000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f000000020320003900000007040000290000000003340436000000210420003900000005044002720000137b0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000013730000413d000000000400004b0000137d0000613d00000007040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000070200002900000021022000390000000000120435000013cb0000013d0000001f0430018f00000005023002720000139b0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000013940000413d000000000504004b000013a90000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000251e00010430000000400200043d000700000002001d000009530220009c000000db0000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000013b70000413d00000007030000290000000003030433000000000303004b000001500000613d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f0000000000120435000000230100008a00000000020b00190000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000300000004001d00000000044300190000094c05000041000000000641004b000000000600001900000000060580190000094c044001970000094c07100197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000004410019000000000142034f000000000101043b0000094d0510009c0000083e0000213d000000000513004900000020034000390000094c04000041000000000653004b000000000600001900000000060420190000094c055001970000094c07300197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b0000083e0000c13d000000010410008c0000141a0000c13d000000000132034f000000000101043b000000010200008a0000094c03000041000000000221004b000000000200001900000000020320190000094c011001970000094c0410009c00000000030080190000094c011001670000094c0110009c000000000102001900000000010360190000006002000039000600000002001d000000000101004b0000146d0000c13d000000400100043d000600000001001d000009530110009c000000db0000213d00000006030000290000004001300039000000400010043f000000200130003900000956020000410000000000210435000000010100003900000000001304350000146d0000013d000000380210008c000014500000413d0000002002100270000009480310009c00000000030100190000000003022019000009480210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000600000004001d000009530440009c000000db0000213d000000000232019f00000006040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000014380000413d00000006040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f00000958044001c700000000004304350000000302200210000000f80220008900000000012101cf0000000602000029000000210220003900000000001204350000146d0000013d000000400200043d000600000002001d000009530220009c000000db0000213d00000006030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a0000145c0000413d00000006030000290000000003030433000000000303004b000001500000613d000000f80110021000000000030204330000095403300197000000000113019f0000094c01100167000000000012043500000000030000310000000301000029000000000513001900000000010b0019000001e4011000390000000202000367000000000412034f000000000404043b0000094c06000041000000000754004b000000000700001900000000070680190000094c055001970000094c08400197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000505004b0000083e0000c13d0000000d050000290000000004540019000000000542034f000000000505043b0000094d0650009c0000083e0000213d000000200650008c0000083e0000413d000000000553004900000020034000390000094c04000041000000000653004b000000000600001900000000060420190000094c055001970000094c07300197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b0000083e0000c13d000000000232034f000000000202043b000000800320008c000014ed0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000500000005001d000000000554004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000505000029000000000445043600000021053000390000000505500272000014d80000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000014d00000413d000000000500004b000014da0000613d00000005050000290000000005050433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000000503000029000000210330003900000000002304350000150d0000013d000000400300043d000500000003001d000009530330009c000000db0000213d00000005040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000014f90000413d00000005040000290000000004040433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000003000031000000030200002900000000052300190000000202000367000000000412034f000000000404043b0000094c06000041000000000754004b000000000700001900000000070680190000094c055001970000094c08400197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000505004b0000083e0000c13d0000000d050000290000000004540019000000000542034f000000000505043b0000094d0650009c0000083e0000213d000000400650008c0000083e0000413d000000000353004900000020054000390000094c06000041000000000735004b000000000700001900000000070620190000094c033001970000094c05500197000000000835004b0000000006008019000000000335013f0000094c0330009c00000000030700190000000003066019000000000303004b0000083e0000c13d0000004003400039000000000232034f000000000202043b000000800320008c0000158d0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000400000005001d000000000554004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000405000029000000000445043600000021053000390000000505500272000015780000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000015700000413d000000000500004b0000157a0000613d00000004050000290000000005050433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000040300002900000021033000390000000000230435000015ad0000013d000000400300043d000400000003001d000009530330009c000000db0000213d00000004040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000015990000413d00000004040000290000000004040433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000003000031000000030200002900000000042300190000000202000367000000000112034f000000000101043b0000094c05000041000000000641004b000000000600001900000000060580190000094c044001970000094c07100197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000001410019000000000412034f000000000404043b0000094d0540009c0000083e0000213d000000000343004900000020051000390000094c06000041000000000735004b000000000700001900000000070620190000094c033001970000094c05500197000000000835004b0000000006008019000000000335013f0000094c0330009c00000000030700190000000003066019000000000303004b0000083e0000c13d000000410340008c000001500000413d0000006001100039000000000112034f000000000101043b000000f801100270000100000001001d0000001b0110008a000000020110008c0000164f0000813d0000014401b00039000000000112034f000000000101043b000000000101004b000016610000613d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f00000001022001900000083e0000613d000000000201043b0000000101200210000000000302004b000015fc0000613d000000090300008a000000000331004b000000d10000213d00000000322100d9000000020220008c000000d10000c13d000000010300002900000000011300190000000802100039000000000132004b000000d10000413d000000800120008c000100000002001d000016610000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c00000000010000190000000101002039000000000313001900000041013000390000000804000029000000000441016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000163c0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000016340000413d000000000500004b0000163e0000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000167e0000013d000000400100043d00000044021000390000096b03000041000000000032043500000024021000390000000f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000400100043d000009530210009c000000db0000213d0000004002100039000000400020043f0000000102000039000000000221043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a0000166b0000413d0000000003010433000000000303004b000001500000613d0000000105000029000000f8035002100000094c04000041000000000505004b000000000304601900000000040204330000095404400197000000000334019f000000000032043500000000020000310000000303000029000000000332001900000002080003670000000204000029000000000448034f000000000904043b0000094c04000041000000000539004b000000000500001900000000050480190000094c033001970000094c06900197000000000736004b0000000004008019000000000336013f0000094c0330009c00000000030500190000000003046019000000000303004b0000083e0000c13d0000000b0300002900000000030304330000000a0400002900000000040404330000000905000029000000000505043300000007060000290000000006060433000000060700002900000000070704330000000d0a0000290000000009a90019000000000898034f000000000808043b0000094d0a80009c0000083e0000213d000000000282004900000020099000390000094c0a000041000000000b29004b000000000b000019000000000b0a20190000094c022001970000094c09900197000000000c29004b000000000a008019000000000229013f0000094c0220009c00000000020b001900000000020a6019000000000202004b0000083e0000c13d00000000023400190000000002520019000000000262001900000000027200190000000002820019000000050300002900000000030304330000000002320019000000040300002900000000030304330000000002320019000000000301043300000000023200190000094d02200197000000380320008c000016f30000413d0000002003200270000009480420009c00000000040200190000000004032019000009480320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009530650009c000000db0000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a000016dd0000413d0000000006050433000000000606004b000001500000613d00000000060404330000095406600197000000f807300210000000000667019f0000095a066001c700000000006404350000000303300210000000f80330008900000000023201cf000000210350003900000000002304350000170d0000013d000000400500043d000009530350009c000000db0000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a000016fd0000413d0000000004050433000000000404004b000001500000613d000000f80220021000000000040304330000095404400197000000000242019f0000095902200041000000000023043500000000020000310000000303000029000000000632001900000002030003670000000204000029000000000443034f000000000404043b0000094c07000041000000000864004b000000000800001900000000080780190000094c066001970000094c09400197000000000a69004b0000000007008019000000000669013f0000094c0660009c00000000060800190000000006076019000000000606004b0000083e0000c13d0000000d060000290000000006640019000000000363034f000000000403043b0000094d0340009c0000083e0000213d000000000242004900000020066000390000094c03000041000000000726004b000000000700001900000000070320190000094c022001970000094c08600197000000000928004b0000000003008019000000000228013f0000094c0220009c00000000020700190000000002036019000000000202004b0000083e0000c13d000000400200043d00000020032000390000000007050433000000000807004b000017450000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b0000173e0000413d000000000537001900000000000504350000000b070000290000000007070433000000000807004b000017540000613d0000000008000019000000000958001900000020088000390000000b0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000174c0000413d000000000557001900000000000504350000000a070000290000000007070433000000000807004b000017630000613d0000000008000019000000000958001900000020088000390000000a0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000175b0000413d0000000005570019000000000005043500000009070000290000000007070433000000000807004b000017720000613d000000000800001900000000095800190000002008800039000000090a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000176a0000413d0000000005570019000000000005043500000007070000290000000007070433000000000807004b000017810000613d000000000800001900000000095800190000002008800039000000070a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017790000413d0000000005570019000000000005043500000006070000290000000007070433000000000807004b000017900000613d000000000800001900000000095800190000002008800039000000060a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017880000413d00000000055700190000001f0740018f0000000000050435000000020660036700000005084002720000179f0000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b000017970000413d000000000907004b000017ae0000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b000017bb0000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b000017b40000413d0000000001450019000000000001043500000005040000290000000004040433000000000504004b000017ca0000613d0000000005000019000000000615001900000020055000390000000507000029000000000775001900000000070704330000000000760435000000000645004b000017c20000413d0000000001140019000000000001043500000004040000290000000004040433000000000504004b000017d90000613d0000000005000019000000000615001900000020055000390000000407000029000000000775001900000000070704330000000000760435000000000645004b000017d10000413d000000000114001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f0000094801000041000009480430009c000000000301801900000040033002100000000002020433000009480420009c00000000020180190000006002200210000000000232019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000101043b000012550000013d000000400210003900000972030000410000000000320435000000200210003900000013030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0006000000000002000400000001001d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f000000010220019000001e300000613d000000000201043b000000800120008c000018650000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c00001e320000213d000000010550019000001e320000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000018520000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000184a0000413d000000000500004b000018540000613d0000000005010433000000000505004b00001e380000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000018820000013d000000400100043d000009530310009c00001e320000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000186f0000413d0000000004010433000000000404004b00001e380000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c000018d30000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b000000000600001900000001060040390000094d0750009c00001e320000213d000000010660019000001e320000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000018c00000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000018b80000413d000000000600004b000018c20000613d0000000006030433000000000606004b00001e380000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000018f00000013d000000400300043d000009530430009c00001e320000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000018dd0000413d0000000005030433000000000505004b00001e380000613d000000f8052002100000094c06000041000000000202004b0000000002050019000000000206601900000000050404330000095405500197000000000225019f00000000002404350000000402000029000000a0022000390000000202200367000000000202043b000000800420008c000019410000413d0000008004200270000009550520009c000000000402a019000009550520009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c00001e320000213d000000010770019000001e320000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000192e0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000019260000413d000000000700004b000019300000613d0000000007040433000000000707004b00001e380000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000195e0000013d000000400400043d000009530540009c00001e320000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000194b0000413d0000000006040433000000000606004b00001e380000613d000000f8062002100000094c07000041000000000202004b0000000002060019000000000207601900000000060504330000095406600197000000000226019f0000000000250435000000040200002900000060022000390000000202200367000000000202043b000000800520008c000019af0000413d0000008005200270000009550620009c000000000502a019000009550620009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c00001e320000213d000000010880019000001e320000c13d000000400070043f00000002076000390000000007750436000000210860003900000005088002720000199c0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000019940000413d000000000800004b0000199e0000613d0000000008050433000000000808004b00001e380000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000019cc0000013d000000400500043d000009530650009c00001e320000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000019b90000413d0000000007050433000000000707004b00001e380000613d000000f8072002100000094c08000041000000000202004b0000000002070019000000000208601900000000070604330000095407700197000000000227019f0000000000260435000000400600043d000009530260009c00001e320000213d000000040900002900000040029000390000000202200367000000000202043b0000004007600039000000400070043f0000002007600039000009570800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000120029000390000000202200367000000000202043b000000800720008c00001a2d0000413d0000008007200270000009550820009c000000000702a019000009550820009c0000000008000019000000100800203900000008098001bf0000094d0a70009c000000000809201900000040097002700000094d0a70009c000000000709201900000004098001bf000009480a70009c00000000080920190000002009700270000009480a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a0040390000094d0b90009c00001e320000213d000000010aa0019000001e320000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200001a1a0000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00001a120000413d000000000a00004b00001a1c0000613d000000000a070433000000000a0a004b00001e380000613d000000000a090433000009540aa00197000000f80b800210000000000aab019f000009560aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500001a4a0000013d000000400700043d000009530870009c00001e320000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00001a370000413d0000000009070433000000000909004b00001e380000613d000000f8092002100000094c0a000041000000000202004b000000000209001900000000020a601900000000090804330000095409900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b00001a570000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b00001a500000413d000000000189001900000000000104350000000008030433000000000908004b00001a640000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b00001a5d0000413d000000000118001900000000000104350000000003040433000000000803004b00001a710000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b00001a6a0000413d000000000113001900000000000104350000000003050433000000000403004b00001a7e0000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b00001a770000413d000000000113001900000000000104350000000003060433000000000403004b00001a8b0000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b00001a840000413d000000000113001900000000000104350000000003070433000000000403004b00001a980000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b00001a910000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b000000000100001900000001010040390000094d0350009c00001e320000213d000000010110019000001e320000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000094c09000041000000000a16004b000000000a000019000000000a0980190000094c011001970000094c0b600197000000000c1b004b000000000900801900000000011b013f0000094c0110009c00000000010a00190000000001096019000000000101004b00001e300000c13d00000004010000290000000001160019000000000617034f000000000606043b0000094d0960009c00001e300000213d000000000968004900000020081000390000094c01000041000000000a98004b000000000a000019000000000a0120190000094c099001970000094c0b800197000000000c9b004b000000000100801900000000099b013f0000094c0990009c00000000010ac019000000000101004b00001e300000c13d000000010160008c00001af50000c13d000000000187034f000000000101043b000000010300008a0000094c06000041000000000331004b000000000300001900000000030620190000094c011001970000094c0710009c00000000060080190000094c011001670000094c0110009c000000000103001900000000010660190000006006000039000000000101004b00001b410000c13d000009530150009c00001e320000213d0000004001500039000000400010043f00000020015000390000095603000041000000000031043500000001010000390000000000150435000000000605001900001b410000013d000000380160008c00001b270000413d0000002001600270000009480360009c00000000030600190000000003012019000009480160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009530350009c00001e320000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a00001b100000413d0000000001050433000000000101004b00001e380000613d00000000010804330000095401100197000000f803700210000000000113019f00000958011001c700000000001804350000000301700210000000f80110008900000000011601cf00000021035000390000000000130435000000000605001900001b410000013d000009530150009c00001e320000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a00001b300000413d0000000001050433000000000101004b00001e380000613d000000f80160021000000000030704330000095403300197000000000113019f0000094c0110016700000000001704350000000006050019000000400500043d000009530150009c00001e320000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a00001b4c0000413d0000000001050433000000000101004b00001e380000613d0000000001070433000009540110019700000959011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b0000094c0c000041000000000d1b004b000000000d000019000000000d0c80190000094c011001970000094c0eb00197000000000f1e004b000000000c00801900000000011e013f0000094c0110009c00000000010d001900000000010c6019000000000101004b00001e300000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b0000094d0cb0009c00001e300000213d000000000cb8004900000020081000390000094c01000041000000000dc8004b000000000d000019000000000d0120190000094c0cc001970000094c0e800197000000000fce004b0000000001008019000000000cce013f0000094c0cc0009c00000000010dc019000000000101004b00001e300000c13d0000002001b0008c00001e300000413d000000000187034f000000000801043b000000800180008c00001bd60000413d0000008001800270000009550780009c000000000108a019000009550780009c00000000070000190000001007002039000000080b7001bf0000094d0c10009c00000000070b2019000000400b1002700000094d0c10009c00000000010b2019000000040b7001bf000009480c10009c00000000070b2019000000200b100270000009480c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c0040390000094d0d10009c00001e320000213d000000010cc0019000001e320000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d10027200001bc20000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b00001bba0000413d000000000100004b00001bc40000613d0000000001070433000000000101004b00001e380000613d00000000010c04330000095401100197000000f803b00210000000000113019f000009560110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c000000000103001900000000010020190000002103700039000000000013043500001bf20000013d000000400700043d000009530170009c00001e320000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a00001be00000413d0000000001070433000000000101004b00001e380000613d000000f8018002100000094c03000041000000000808004b000000000103601900000000030b04330000095403300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000094c03000041000000000d1b004b000000000d000019000000000d0380190000094c011001970000094c0eb00197000000000f1e004b000000000300801900000000011e013f0000094c0110009c00000000010d00190000000001036019000000000101004b00001e300000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000094d01d0009c00001e300000213d0000000001dc00490000002003b000390000094c0c000041000000000e13004b000000000e000019000000000e0c20190000094c011001970000094c03300197000000000f13004b000000000c008019000000000113013f0000094c0110009c00000000010e001900000000010c6019000000000101004b00001e300000c13d0000004001d0008c00001e300000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c00001c6e0000413d0000008001b002700000095503b0009c00000000010ba0190000095503b0009c0000000003000019000000100300203900000008083001bf0000094d0c10009c000000000308201900000040081002700000094d0c10009c000000000108201900000004083001bf000009480c10009c00000000030820190000002008100270000009480c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d0040390000094d0310009c00001e320000213d0000000103d0019000001e320000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e10027200001c5a0000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b00001c520000413d000000000100004b00001c5c0000613d0000000001080433000000000101004b00001e380000613d00000000010d04330000095401100197000000f803c00210000000000113019f000009560110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c000000000103001900000000010020190000002103800039000000000013043500001c8a0000013d000000400800043d000009530180009c00001e320000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a00001c780000413d0000000001080433000000000101004b00001e380000613d000000f801b002100000094c0300004100000000090b004b000000000103601900000000030c04330000095403300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b0000094c0300004100000000091a004b000000000900001900000000090380190000094c011001970000094c0da00197000000000e1d004b000000000300801900000000011d013f0000094c0110009c00000000010900190000000001036019000000000101004b00001e300000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000094d01d0009c00001e300000213d0000000001dc00490000002003a000390000094c09000041000000000c13004b000000000c000019000000000c0920190000094c011001970000094c03300197000000000e13004b0000000009008019000000000113013f0000094c0110009c00000000010c00190000000001096019000000000101004b00001e300000c13d0000004101d0008c00001e380000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c90000094c0c000041000000000101043b000000f8011002700000001b0310008c00001cc50000613d000000000b000415000000050bb0008a000000200bb000c90000095b0c0000410000001c0110008c00001e3e0000c13d000000400a00043d0000095301a0009c00001e320000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a00001ccf0000413d00000000010a0433000000000101004b00001e380000613d00000000010d043300000954011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b0000094c0300004100000000091f004b000000000900001900000000090380190000094c011001970000094c0cf00197000000000d1c004b000000000300801900000000011c013f0000094c0110009c00000000010900190000000001036019000000000101004b00001e300000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000094d03e0009c00001e300000213d0000000003eb004900000020011000390000094c09000041000000000b31004b000000000b000019000000000b0920190000094c033001970000094c01100197000000000f31004b0000000009008019000000000131013f0000094c0110009c00000000010b00190000000001096019000000000101004b00001e300000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a043300000000013100190000094d0c1001970000003801c0008c00001d480000413d0000002001c002700000094803c0009c00000000030c001900000000030120190000094801c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095303b0009c00001e320000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a00001d320000413d00000000010b0433000000000101004b00001e380000613d00000000010d04330000095401100197000000f803900210000000000113019f0000095a011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b00039000000000013043500001d620000013d000000400b00043d0000095301b0009c00001e320000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a00001d520000413d00000000010b0433000000000101004b00001e380000613d000000f801c0021000000000030904330000095403300197000000000131019f00000959011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000094c09000041000000000d13004b000000000d000019000000000d0980190000094c011001970000094c0e300197000000000f1e004b000000000900801900000000011e013f0000094c0110009c00000000010d00190000000001096019000000000101004b00001e300000c13d00000004010000290000000001130019000000000314034f000000000903043b0000094d0390009c00001e300000213d00000000039c0049000000200c1000390000094c0100004100000000043c004b000000000400001900000000040120190000094c033001970000094c0dc00197000000000e3d004b000000000100801900000000033d013f0000094c0330009c000000000104c019000000000101004b00001e300000c13d000000400300043d00000020043000390000095b01000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b00001d9c0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b00001d950000413d000000000bde001900000000000b0435000000000d02043300000000010d004b00001da90000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b00001da20000413d0000000002bd00190000000000020435000000000b06043300000000010b004b00001db60000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b00001daf0000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c90027200001dc50000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b00001dbd0000413d000000000106004b00001dd40000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b00001de10000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b00001dda0000413d0000000002260019000000000002043500000000050a0433000000000105004b00001dee0000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b00001de70000413d000000000225001900000000000204350000000005070433000000000105004b00001dfb0000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b00001df40000413d000000000225001900000000000204350000000005080433000000000105004b00001e080000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b00001e010000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b000000000200001900000001020040390000094d0410009c00001e320000213d000000010220019000001e320000c13d000000400010043f00000948010000410000000404000029000009480240009c0000000002010019000000000204401900000040022002100000000003030433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f000000010220019000001e300000613d000000000101043b000000000001042d00000000010000190000251e00010430000009700100004100000000001004350000004101000039000000040010043f00000971010000410000251e00010430000009700100004100000000001004350000003201000039000000040010043f00000971010000410000251e00010430000000400100043d00000044021000390000096b03000041000000000032043500000024021000390000000f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e000104300006000000000002000400000001001d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f0000000102200190000024f20000613d000000000201043b000000800120008c00001eac0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000024f40000213d0000000105500190000024f40000c13d000000400040043f000000020430003900000000044104360000002105300039000000050550027200001e990000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00001e910000413d000000000500004b00001e9b0000613d0000000005010433000000000505004b000024fa0000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000002103100039000000000023043500001ec90000013d000000400100043d000009530310009c000024f40000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00001eb60000413d0000000004010433000000000404004b000024fa0000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c00001f1a0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b000000000600001900000001060040390000094d0750009c000024f40000213d0000000106600190000024f40000c13d000000400050043f000000020540003900000000055304360000002106400039000000050660027200001f070000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b00001eff0000413d000000000600004b00001f090000613d0000000006030433000000000606004b000024fa0000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c00000000020020190000002104300039000000000024043500001f370000013d000000400300043d000009530430009c000024f40000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a00001f240000413d0000000005030433000000000505004b000024fa0000613d000000f8052002100000094c06000041000000000202004b0000000002050019000000000206601900000000050404330000095405500197000000000225019f00000000002404350000000402000029000000c0022000390000000202200367000000000202043b000000800420008c00001f880000413d0000008004200270000009550520009c000000000402a019000009550520009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c000024f40000213d0000000107700190000024f40000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200001f750000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00001f6d0000413d000000000700004b00001f770000613d0000000007040433000000000707004b000024fa0000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500001fa50000013d000000400400043d000009530540009c000024f40000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00001f920000413d0000000006040433000000000606004b000024fa0000613d000000f8062002100000094c07000041000000000202004b0000000002060019000000000207601900000000060504330000095406600197000000000226019f00000000002504350000000402000029000000a0022000390000000202200367000000000202043b000000800520008c00001ff60000413d0000008005200270000009550620009c000000000502a019000009550620009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c000024f40000213d0000000108800190000024f40000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200001fe30000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00001fdb0000413d000000000800004b00001fe50000613d0000000008050433000000000808004b000024fa0000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000020130000013d000000400500043d000009530650009c000024f40000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000020000000413d0000000007050433000000000707004b000024fa0000613d000000f8072002100000094c08000041000000000202004b0000000002070019000000000208601900000000070604330000095407700197000000000227019f0000000000260435000000040200002900000060022000390000000202200367000000000202043b000000800620008c000020640000413d0000008006200270000009550720009c000000000602a019000009550720009c0000000007000019000000100700203900000008087001bf0000094d0960009c000000000708201900000040086002700000094d0960009c000000000608201900000004087001bf000009480960009c00000000070820190000002008600270000009480960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b000000000900001900000001090040390000094d0a80009c000024f40000213d0000000109900190000024f40000c13d000000400080043f0000000208700039000000000886043600000021097000390000000509900272000020510000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000020490000413d000000000900004b000020530000613d0000000009060433000000000909004b000024fa0000613d00000000090804330000095409900197000000f80a70021000000000099a019f000009560990004100000000009804350000000307700210000000f80770008900000000027201cf000000ff0770008c000000000200201900000021076000390000000000270435000020810000013d000000400600043d000009530760009c000024f40000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a0000206e0000413d0000000008060433000000000808004b000024fa0000613d000000f8082002100000094c09000041000000000202004b0000000002080019000000000209601900000000080704330000095408800197000000000228019f0000000000270435000000400700043d000009530270009c000024f40000213d000000040a0000290000004002a000390000000202200367000000000202043b0000004008700039000000400080043f000000200870003900000957090000410000000000980435000000150800003900000000008704350000002108700039000000600220021000000000002804350000012002a000390000000202200367000000000202043b000000800820008c000020e20000413d0000008008200270000009550920009c000000000802a019000009550920009c00000000090000190000001009002039000000080a9001bf0000094d0b80009c00000000090a2019000000400a8002700000094d0b80009c00000000080a2019000000040a9001bf000009480b80009c00000000090a2019000000200a800270000009480b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b0040390000094d0ca0009c000024f40000213d000000010bb00190000024f40000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000020cf0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b000020c70000413d000000000b00004b000020d10000613d000000000b080433000000000b0b004b000024fa0000613d000000000b0a0433000009540bb00197000000f80c900210000000000bbc019f000009560bb000410000000000ba04350000000309900210000000f80990008900000000029201cf000000ff0990008c000000000200201900000021098000390000000000290435000020ff0000013d000000400800043d000009530980009c000024f40000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000020ec0000413d000000000a080433000000000a0a004b000024fa0000613d000000f80a2002100000094c0b000041000000000202004b00000000020a001900000000020b6019000000000a090433000009540aa0019700000000022a019f0000000000290435000000400200043d0000002009200039000000000a010433000000000b0a004b0000210c0000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b000021050000413d00000000019a001900000000000104350000000009030433000000000a09004b000021190000613d000000000a000019000000000b1a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b9a004b000021120000413d000000000119001900000000000104350000000003040433000000000903004b000021260000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b0000211f0000413d000000000113001900000000000104350000000003050433000000000403004b000021330000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000934004b0000212c0000413d000000000113001900000000000104350000000003060433000000000403004b000021400000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000534004b000021390000413d000000000113001900000000000104350000000003070433000000000403004b0000214d0000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b000021460000413d000000000113001900000000000104350000000003080433000000000403004b0000215a0000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000534004b000021530000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b000000000100001900000001010040390000094d0350009c000024f40000213d0000000101100190000024f40000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000094c09000041000000000a16004b000000000a000019000000000a0980190000094c011001970000094c0b600197000000000c1b004b000000000900801900000000011b013f0000094c0110009c00000000010a00190000000001096019000000000101004b000024f20000c13d00000004010000290000000001160019000000000617034f000000000606043b0000094d0960009c000024f20000213d000000000968004900000020081000390000094c01000041000000000a98004b000000000a000019000000000a0120190000094c099001970000094c0b800197000000000c9b004b000000000100801900000000099b013f0000094c0990009c00000000010ac019000000000101004b000024f20000c13d000000010160008c000021b70000c13d000000000187034f000000000101043b000000010300008a0000094c06000041000000000331004b000000000300001900000000030620190000094c011001970000094c0710009c00000000060080190000094c011001670000094c0110009c000000000103001900000000010660190000006006000039000000000101004b000022030000c13d000009530150009c000024f40000213d0000004001500039000000400010043f000000200150003900000956030000410000000000310435000000010100003900000000001504350000000006050019000022030000013d000000380160008c000021e90000413d0000002001600270000009480360009c00000000030600190000000003012019000009480160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009530350009c000024f40000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a000021d20000413d0000000001050433000000000101004b000024fa0000613d00000000010804330000095401100197000000f803700210000000000113019f00000958011001c700000000001804350000000301700210000000f80110008900000000011601cf000000210350003900000000001304350000000006050019000022030000013d000009530150009c000024f40000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a000021f20000413d0000000001050433000000000101004b000024fa0000613d000000f80160021000000000030704330000095403300197000000000113019f0000094c0110016700000000001704350000000006050019000000400500043d000009530150009c000024f40000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a0000220e0000413d0000000001050433000000000101004b000024fa0000613d0000000001070433000009540110019700000959011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b0000094c0c000041000000000d1b004b000000000d000019000000000d0c80190000094c011001970000094c0eb00197000000000f1e004b000000000c00801900000000011e013f0000094c0110009c00000000010d001900000000010c6019000000000101004b000024f20000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b0000094d0cb0009c000024f20000213d000000000cb8004900000020081000390000094c01000041000000000dc8004b000000000d000019000000000d0120190000094c0cc001970000094c0e800197000000000fce004b0000000001008019000000000cce013f0000094c0cc0009c00000000010dc019000000000101004b000024f20000c13d0000002001b0008c000024f20000413d000000000187034f000000000801043b000000800180008c000022980000413d0000008001800270000009550780009c000000000108a019000009550780009c00000000070000190000001007002039000000080b7001bf0000094d0c10009c00000000070b2019000000400b1002700000094d0c10009c00000000010b2019000000040b7001bf000009480c10009c00000000070b2019000000200b100270000009480c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c0040390000094d0d10009c000024f40000213d000000010cc00190000024f40000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d100272000022840000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b0000227c0000413d000000000100004b000022860000613d0000000001070433000000000101004b000024fa0000613d00000000010c04330000095401100197000000f803b00210000000000113019f000009560110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c0000000001030019000000000100201900000021037000390000000000130435000022b40000013d000000400700043d000009530170009c000024f40000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a000022a20000413d0000000001070433000000000101004b000024fa0000613d000000f8018002100000094c03000041000000000808004b000000000103601900000000030b04330000095403300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000094c03000041000000000d1b004b000000000d000019000000000d0380190000094c011001970000094c0eb00197000000000f1e004b000000000300801900000000011e013f0000094c0110009c00000000010d00190000000001036019000000000101004b000024f20000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000094d01d0009c000024f20000213d0000000001dc00490000002003b000390000094c0c000041000000000e13004b000000000e000019000000000e0c20190000094c011001970000094c03300197000000000f13004b000000000c008019000000000113013f0000094c0110009c00000000010e001900000000010c6019000000000101004b000024f20000c13d0000004001d0008c000024f20000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c000023300000413d0000008001b002700000095503b0009c00000000010ba0190000095503b0009c0000000003000019000000100300203900000008083001bf0000094d0c10009c000000000308201900000040081002700000094d0c10009c000000000108201900000004083001bf000009480c10009c00000000030820190000002008100270000009480c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d0040390000094d0310009c000024f40000213d0000000103d00190000024f40000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e1002720000231c0000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b000023140000413d000000000100004b0000231e0000613d0000000001080433000000000101004b000024fa0000613d00000000010d04330000095401100197000000f803c00210000000000113019f000009560110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c00000000010300190000000001002019000000210380003900000000001304350000234c0000013d000000400800043d000009530180009c000024f40000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a0000233a0000413d0000000001080433000000000101004b000024fa0000613d000000f801b002100000094c0300004100000000090b004b000000000103601900000000030c04330000095403300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b0000094c0300004100000000091a004b000000000900001900000000090380190000094c011001970000094c0da00197000000000e1d004b000000000300801900000000011d013f0000094c0110009c00000000010900190000000001036019000000000101004b000024f20000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000094d01d0009c000024f20000213d0000000001dc00490000002003a000390000094c09000041000000000c13004b000000000c000019000000000c0920190000094c011001970000094c03300197000000000e13004b0000000009008019000000000113013f0000094c0110009c00000000010c00190000000001096019000000000101004b000024f20000c13d0000004101d0008c000024fa0000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c90000094c0c000041000000000101043b000000f8011002700000001b0310008c000023870000613d000000000b000415000000050bb0008a000000200bb000c90000095b0c0000410000001c0110008c000025000000c13d000000400a00043d0000095301a0009c000024f40000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a000023910000413d00000000010a0433000000000101004b000024fa0000613d00000000010d043300000954011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b0000094c0300004100000000091f004b000000000900001900000000090380190000094c011001970000094c0cf00197000000000d1c004b000000000300801900000000011c013f0000094c0110009c00000000010900190000000001036019000000000101004b000024f20000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000094d03e0009c000024f20000213d0000000003eb004900000020011000390000094c09000041000000000b31004b000000000b000019000000000b0920190000094c033001970000094c01100197000000000f31004b0000000009008019000000000131013f0000094c0110009c00000000010b00190000000001096019000000000101004b000024f20000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a043300000000013100190000094d0c1001970000003801c0008c0000240a0000413d0000002001c002700000094803c0009c00000000030c001900000000030120190000094801c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095303b0009c000024f40000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a000023f40000413d00000000010b0433000000000101004b000024fa0000613d00000000010d04330000095401100197000000f803900210000000000113019f0000095a011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b000390000000000130435000024240000013d000000400b00043d0000095301b0009c000024f40000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a000024140000413d00000000010b0433000000000101004b000024fa0000613d000000f801c0021000000000030904330000095403300197000000000131019f00000959011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000094c09000041000000000d13004b000000000d000019000000000d0980190000094c011001970000094c0e300197000000000f1e004b000000000900801900000000011e013f0000094c0110009c00000000010d00190000000001096019000000000101004b000024f20000c13d00000004010000290000000001130019000000000314034f000000000903043b0000094d0390009c000024f20000213d00000000039c0049000000200c1000390000094c0100004100000000043c004b000000000400001900000000040120190000094c033001970000094c0dc00197000000000e3d004b000000000100801900000000033d013f0000094c0330009c000000000104c019000000000101004b000024f20000c13d000000400300043d00000020043000390000095c01000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b0000245e0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b000024570000413d000000000bde001900000000000b0435000000000d02043300000000010d004b0000246b0000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b000024640000413d0000000002bd00190000000000020435000000000b06043300000000010b004b000024780000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b000024710000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c900272000024870000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b0000247f0000413d000000000106004b000024960000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b000024a30000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b0000249c0000413d0000000002260019000000000002043500000000050a0433000000000105004b000024b00000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b000024a90000413d000000000225001900000000000204350000000005070433000000000105004b000024bd0000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b000024b60000413d000000000225001900000000000204350000000005080433000000000105004b000024ca0000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b000024c30000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b000000000200001900000001020040390000094d0410009c000024f40000213d0000000102200190000024f40000c13d000000400010043f00000948010000410000000404000029000009480240009c0000000002010019000000000204401900000040022002100000000003030433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f0000000102200190000024f20000613d000000000101043b000000000001042d00000000010000190000251e00010430000009700100004100000000001004350000004101000039000000040010043f00000971010000410000251e00010430000009700100004100000000001004350000003201000039000000040010043f00000971010000410000251e00010430000000400100043d00000044021000390000096b03000041000000000032043500000024021000390000000f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e0001043000002515002104230000000102000039000000000001042d0000000002000019000000000001042d0000251a002104230000000102000039000000000001042d0000000002000019000000000001042d0000251c000004320000251d0001042e0000251e00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000ebe4a3d7000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff456e636f64696e6720756e737570706f7274656420747800000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f1901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f8080000000000000000000000000000000000000000000000000000000000000496e76616c696420762076616c756500000000000000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000000000400000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000556e737570706f72746564207478207479706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052b2bf42e5ab5127f48669ab36579badd217fbd10998091dbba6028927708cf2", + "deployedBytecode": "0x0004000000000002000d00000000000200000000030100190000006003300270000009480430019700030000004103550002000000010355000009480030019d000100000000001f000000800a0000390000004000a0043f0000000101200190000000910000c13d0000000001000031000000040110008c0000083e0000413d0000000201000367000000000101043b0000094a011001970000094b0110009c0000083e0000c13d0000000001000416000000000101004b0000083e0000c13d0000000001000031000000040310008a0000094c02000041000000200430008c000000000400001900000000040240190000094c05300197000000000605004b000000000200a0190000094c0550009c000000000204c019000000000202004b0000083e0000c13d00000002020003670000000404200370000000000904043b0000094d0490009c0000083e0000213d00000000039300490000094c04000041000002600530008c000000000500001900000000050440190000094c03300197000000000603004b000000000400a0190000094c0330009c00000000030500190000000003046019000000000303004b0000083e0000c13d0000000403900039000d00000003001d000000000332034f000000000303043b000000000403004b000000990000c13d000c00000009001d0000010401900039000000000112034f000000000101043b000000800210008c000000d70000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f00000002032000390000000b090000290000000003390436000000210420003900000005044002720000007d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000750000413d000000000400004b0000007f0000613d0000000004090433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000001bc0000013d0000000001000416000000000101004b0000083e0000c13d00000020010000390000010000100443000001200000044300000949010000410000251d0001042e000000710430008c000000e10000c13d000001c403900039000000000332034f000000230400008a0000000004940049000b00000004001d0000000004140019000000000303043b0000094c05000041000000000643004b000000000600001900000000060580190000094c044001970000094c07300197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000003430019000000000232034f000000000202043b0000094d0420009c0000083e0000213d000000000121004900000020033000390000094c04000041000000000513004b000000000500001900000000050420190000094c011001970000094c06300197000000000716004b0000000004008019000000000116013f0000094c0110009c00000000010500190000000001046019000000000101004b0000083e0000c13d00000000010004140000000004320019000000000224004b0000000002000019000000010200403900000948033001970000000102200190000000d10000c13d0000000002000031000000000542004b0000041b0000813d000009700100004100000000001004350000001101000039000000040010043f00000971010000410000251e00010430000000400200043d000b00000002001d000009530220009c0000013e0000a13d000009700100004100000000001004350000004101000039000000040010043f00000971010000410000251e00010430000000020130008c000001560000c13d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039000c00000009001d251c25120000040f00000001022001900000083e0000613d000000000201043b000000800120008c0000028d0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000012b0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001230000413d000000000500004b0000012d0000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000002aa0000013d0000000b070000290000004002700039000000400020043f0000000102000039000000000227043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000001460000413d0000000003070433000000000303004b000001b30000c13d000009700100004100000000001004350000003201000039000000040010043f00000971010000410000251e00010430000000010130008c0000020d0000c13d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039000c00000009001d251c25120000040f00000001022001900000083e0000613d000000000201043b000000800120008c000002fb0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001a00000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001980000413d000000000500004b000001a20000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000003180000013d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f00000000001204350000000c01000029000000a4011000390000000201100367000000000201043b000000800120008c0000021f0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000001fa0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000001f20000413d000000000500004b000001fc0000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000023c0000013d000000400100043d00000044021000390000094e0300004100000000003204350000002402100039000000170300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002290000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000c0200002900000064022000390000000202200367000000000302043b000000800230008c000003690000413d0000008002300270000009550430009c000000000203a019000009550430009c0000000004000019000000100400203900000008054001bf0000094d0620009c000000000405201900000040052002700000094d0620009c000000000205201900000004054001bf000009480620009c00000000040520190000002005200270000009480620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f00000002054000390000000005520436000000210640003900000005066002720000027a0000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000002720000413d000000000600004b0000027c0000613d0000000006020433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000003860000013d000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000002970000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000302043b000000800230008c000004320000413d0000008002300270000009550430009c000000000203a019000009550430009c0000000004000019000000100400203900000008054001bf0000094d0620009c000000000405201900000040052002700000094d0620009c000000000205201900000004054001bf000009480620009c00000000040520190000002005200270000009480620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000002e80000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000002e00000413d000000000600004b000002ea0000613d0000000006020433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c0000000003002019000000210420003900000000003404350000044f0000013d000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000003050000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000c0200002900000104022000390000000202200367000000000202043b000000800320008c0000068b0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000003560000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000034e0000413d000000000600004b000003580000613d0000000006030433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000006a80000013d000000400200043d000009530420009c000000db0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000003730000413d0000000005020433000000000505004b000001500000613d000000f8053002100000094c06000041000000000303004b0000000003050019000000000306601900000000050404330000095405500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000003940000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b0000038d0000413d000000000134001900000000000104350000000003020433000000000403004b000003a10000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b0000039a0000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d0000094d0220009c000000db0000213d0000000101100190000000db0000c13d0000000901000029000000400010043f000009530110009c000000db0000213d0000000c0400002900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f0000002002500039000009570300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000007f00000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f00000002032000390000000704000029000000000334043600000021042000390000000504400272000004060000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000003fe0000413d000000000400004b000004080000613d00000007040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000070200002900000021022000390000000000120435000008100000013d000a0000000a001d000c00000009001d00000002033003670000095d0510009c000004a00000413d000000400100043d00000044021000390000096f0300004100000000003204350000002402100039000000080300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000400200043d000009530420009c000000db0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a0000043c0000413d0000000005020433000000000505004b000001500000613d000000f8053002100000094c06000041000000000303004b0000000003050019000000000306601900000000050404330000095405500197000000000335019f00000000003404350000000c03000029000000c4033000390000000203300367000000000303043b000000800430008c000007140000413d0000008004300270000009550530009c000000000403a019000009550530009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c000000db0000213d0000000107700190000000db0000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000048d0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000004850000413d000000000700004b0000048f0000613d0000000007040433000000000707004b000001500000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c000000000300201900000021054000390000000000350435000007310000013d0000000002420049000009480220019700000000022303df000000c0011002100000095e011001970000095f011001c700000000011203af0000801002000039251c25170000040f00000000030100190000006003300270000109480030019d000009480330019700030000000103550000000102200190000006f90000613d0000003f013000390000096001100197000000400200043d0000000001120019000000000421004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f00000000013204360000001f043000390000000504400272000004cb0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004c30000413d000000000400004b000004cd0000613d0000000104000031000000000443004b0000083e0000213d00000003050003670000001f0430018f0000000503300272000004dd0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000004d50000413d000000000604004b000004ec0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e570000c13d00000000040000310000000b0200002900000000052400190000000c0200002900000204032000390000000202000367000000000332034f000000000303043b0000094c06000041000000000753004b000000000700001900000000070680190000094c055001970000094c08300197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000505004b0000083e0000c13d0000000001010433000900000001001d0000000d010000290000000001130019000000000312034f000000000503043b0000094d0350009c0000083e0000213d0000000503500210000000000434004900000020061000390000094c01000041000000000746004b000000000700001900000000070120190000094c044001970000094c08600197000000000948004b0000000001008019000000000448013f0000094c0440009c000000000107c019000000000101004b0000083e0000c13d000000400100043d000000200410003900000961055001980000052b0000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000005230000413d000000000200004b0000052d0000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b000000000300001900000001030040390000094d0520009c000000db0000213d0000000103300190000000db0000c13d000000400020043f0000094802000041000009480340009c0000000003020019000000000304401900000040033002100000000001010433000009480410009c00000000010280190000006001100210000000000131019f0000000003000414000009480430009c0000000002034019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c030000290000083e0000613d00000000020000310000000b04000029000000000542001900000224043000390000000203000367000000000443034f000000000404043b0000094c06000041000000000754004b000000000700001900000000070680190000094c055001970000094c08400197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000101043b000b00000001001d000000000105004b0000083e0000c13d0000000d010000290000000004140019000000000143034f000000000101043b0000094d0310009c0000083e0000213d000000000212004900000020034000390000094c04000041000000000523004b000000000500001900000000050420190000094c022001970000094c06300197000000000726004b0000000004008019000000000226013f0000094c0220009c00000000020500190000000002046019000000000202004b0000083e0000c13d0000000002000414000000000131001a0000094804300197000000d10000413d0000000003000031000000000513004b000000d10000413d0000000204400367000009480520009c000004200000213d0000000001130049000009480110019700000000011403df000000c0022002100000095e022001970000095f022001c700000000012103af0000801002000039251c25170000040f00000000030100190000006003300270000109480030019d00000948033001970003000000010355000000010220019000000ff30000613d0000003f013000390000096001100197000000400200043d0000000001120019000000000421004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f00000000013204360000001f043000390000000504400272000005b10000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000005a90000413d000000000400004b000005b30000613d0000000104000031000000000443004b0000083e0000213d00000003050003670000001f0430018f0000000503300272000005c30000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000005bb0000413d000000000604004b000005d20000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000e570000c13d0000000c0b0000290000006402b000390000000203000367000000000523034f0000004402b00039000000000423034f0000002402b00039000000000623034f0000008402b00039000000a407b00039000000c408b00039000000e409b00039000001040ab00039000001240bb00039000000000bb3034f000000000aa3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000d02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000a0a043b000000000b0b043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c1000390000000b0d0000290000000000dc0435000001800c100039000000090d0000290000000000dc0435000001600c1000390000000000bc0435000001400b1000390000000000ab0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000962030000410000000000320435000001c0030000390000000000310435000009630310009c000000db0000213d000001e003100039000000400030043f0000094803000041000009480420009c000000000203801900000040022002100000000001010433000009480410009c00000000010380190000006001100210000000000121019f0000000002000414000009480420009c0000000002038019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000101043b000900000001001d000000400100043d000b00000001001d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f0000000a0400002900000001022001900000083e0000613d0000000b050000290000002002500039000000000101043b00000964030000410000000000320435000000800350003900000000001304350000006001500039000009650300004100000000003104350000004001500039000009660300004100000000003104350000000000450435000009670150009c000000db0000213d0000000b04000029000000a001400039000000400010043f0000094801000041000009480320009c000000000201801900000040022002100000000003040433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000301043b000000400100043d0000004202100039000000090400002900000000004204350000002002100039000009680400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000009690310009c000000db0000213d0000008003100039000000400030043f0000094803000041000009480420009c000000000203801900000040022002100000000001010433000009480410009c00000000010380190000006001100210000000000121019f0000000002000414000009480420009c0000000002038019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b00002900000daa0000c13d0000083e0000013d000000400300043d000009530430009c000000db0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006950000413d0000000005030433000000000505004b000001500000613d000000f8052002100000094c06000041000000000202004b0000000002050019000000000206601900000000050404330000095405500197000000000225019f00000000002404350000000c02000029000000a4022000390000000202200367000000000202043b000000800420008c000007820000413d0000008004200270000009550520009c000000000402a019000009550520009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c000000db0000213d0000000107700190000000db0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000006e60000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000006de0000413d000000000700004b000006e80000613d0000000007040433000000000707004b000001500000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000079f0000013d0000001f0430018f0000000502300272000007040000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000006fd0000413d000000000504004b000007120000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000251e00010430000000400400043d000009530540009c000000db0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000071e0000413d0000000006040433000000000606004b000001500000613d000000f8063002100000094c07000041000000000303004b0000000003060019000000000307601900000000060504330000095406600197000000000336019f00000000003504350000000c03000029000000a4033000390000000203300367000000000303043b000000800530008c000008400000413d0000008005300270000009550630009c000000000503a019000009550630009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c000000db0000213d0000000108800190000000db0000c13d000000400070043f00000002076000390000000007750436000000210860003900000005088002720000076f0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000007670000413d000000000800004b000007710000613d0000000008050433000000000808004b000001500000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c0000000003002019000000210650003900000000003604350000085d0000013d000000400400043d000009530540009c000000db0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000078c0000413d0000000006040433000000000606004b000001500000613d000000f8062002100000094c07000041000000000202004b0000000002060019000000000207601900000000060504330000095406600197000000000226019f00000000002504350000000c0200002900000064022000390000000202200367000000000202043b000000800520008c000008ae0000413d0000008005200270000009550620009c000000000502a019000009550620009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c000000db0000213d0000000108800190000000db0000c13d000000400070043f0000000207600039000000000775043600000021086000390000000508800272000007dd0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000007d50000413d000000000800004b000007df0000613d0000000008050433000000000808004b000001500000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000008cb0000013d000000400200043d000700000002001d000009530220009c000000db0000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000007fc0000413d00000007030000290000000003030433000000000303004b000001500000613d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f0000000000120435000000230100008a0000000c020000290000000004210049000001c4012000390000000202000367000600000001001d000000000112034f000000000101043b0000000003000031000500000004001d00000000044300190000094c05000041000000000641004b000000000600001900000000060580190000094c044001970000094c07100197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000004410019000000000142034f000000000101043b0000094d0510009c0000083e0000213d000000000513004900000020034000390000094c04000041000000000653004b000000000600001900000000060420190000094c055001970000094c07300197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b000009aa0000613d00000000010000190000251e00010430000000400500043d000009530650009c000000db0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a0000084a0000413d0000000007050433000000000707004b000001500000613d000000f8073002100000094c08000041000000000303004b0000000003070019000000000308601900000000070604330000095407700197000000000337019f00000000003604350000000c0300002900000064033000390000000203300367000000000303043b000000800630008c0000092c0000413d0000008006300270000009550730009c000000000603a019000009550730009c0000000007000019000000100700203900000008087001bf0000094d0960009c000000000708201900000040086002700000094d0960009c000000000608201900000004087001bf000009480960009c00000000070820190000002008600270000009480960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b000000000900001900000001090040390000094d0a80009c000000db0000213d0000000109900190000000db0000c13d000000400080043f00000002087000390000000008860436000000210970003900000005099002720000089b0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000008930000413d000000000900004b0000089d0000613d0000000009060433000000000909004b000001500000613d00000000090804330000095409900197000000f80a70021000000000099a019f000009560990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c000000000300201900000021076000390000000000370435000009490000013d000000400500043d000009530650009c000000db0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000008b80000413d0000000007050433000000000707004b000001500000613d000000f8072002100000094c08000041000000000202004b0000000002070019000000000208601900000000070604330000095407700197000000000227019f0000000000260435000000400600043d000009530260009c000000db0000213d0000000c0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f0000002007600039000009570800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c000009cb0000413d0000008007200270000009550820009c000000000702a019000009550820009c0000000008000019000000100800203900000008098001bf0000094d0a70009c000000000809201900000040097002700000094d0a70009c000000000709201900000004098001bf000009480a70009c00000000080920190000002009700270000009480a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a0040390000094d0b90009c000000db0000213d000000010aa00190000000db0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa00272000009190000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b000009110000413d000000000a00004b0000091b0000613d000000000a070433000000000a0a004b000001500000613d000000000a090433000009540aa00197000000f80b800210000000000aab019f000009560aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c000000000200201900000021087000390000000000280435000009e80000013d000000400600043d000009530760009c000000db0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000009360000413d0000000008060433000000000808004b000001500000613d000000f8083002100000094c09000041000000000303004b0000000003080019000000000309601900000000080704330000095408800197000000000338019f0000000000370435000000400700043d000009530370009c000000db0000213d0000000c0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f000000200870003900000957090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000ac60000413d0000008008300270000009550930009c000000000803a019000009550930009c00000000090000190000001009002039000000080a9001bf0000094d0b80009c00000000090a2019000000400a8002700000094d0b80009c00000000080a2019000000040a9001bf000009480b80009c00000000090a2019000000200a800270000009480b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b0040390000094d0ca0009c000000db0000213d000000010bb00190000000db0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000009970000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b0000098f0000413d000000000b00004b000009990000613d000000000b080433000000000b0b004b000001500000613d000000000b0a0433000009540bb00197000000f80c900210000000000bbc019f000009560bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000ae30000013d000000010410008c00000a900000c13d000000000132034f000000000101043b000000010200008a0000094c03000041000000000221004b000000000200001900000000020320190000094c011001970000094c0410009c00000000030080190000094c011001670000094c0110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b00000bb50000c13d000000400100043d000400000001001d000009530110009c000000db0000213d00000004030000290000004001300039000000400010043f0000002001300039000009560200004100000000002104350000000101000039000000000013043500000bb50000013d000000400700043d000009530870009c000000db0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000009d50000413d0000000009070433000000000909004b000001500000613d000000f8092002100000094c0a000041000000000202004b000000000209001900000000020a601900000000090804330000095409900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b000009f50000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b000009ee0000413d000000000189001900000000000104350000000008030433000000000908004b00000a020000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b000009fb0000413d000000000118001900000000000104350000000003040433000000000803004b00000a0f0000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b00000a080000413d000000000113001900000000000104350000000003050433000000000403004b00000a1c0000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b00000a150000413d000000000113001900000000000104350000000003060433000000000403004b00000a290000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b00000a220000413d000000000113001900000000000104350000000003070433000000000403004b00000a360000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b00000a2f0000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f03100039000000200100008a000000000313016f0000000005230019000000000335004b000000000300001900000001030040390000094d0450009c000000db0000213d0000000103300190000000db0000c13d000000400050043f000000230300008a0000000c060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b000000000800003100000000094800190000094c0a000041000000000b96004b000000000b000019000000000b0a80190000094c099001970000094c0c600197000000000d9c004b000000000a00801900000000099c013f0000094c0990009c00000000090b001900000000090a6019000000000909004b0000083e0000c13d0000000d090000290000000009960019000000000697034f000000000606043b0000094d0a60009c0000083e0000213d000000000a68004900000020089000390000094c09000041000000000ba8004b000000000b000019000000000b0920190000094c0aa001970000094c0c800197000000000dac004b0000000009008019000000000aac013f0000094c0aa0009c00000000090bc019000000000909004b0000083e0000c13d000000010960008c00000e690000c13d000000000687034f000000000606043b000000010700008a0000094c08000041000000000776004b000000000700001900000000070820190000094c066001970000094c0960009c00000000080080190000094c066001670000094c0660009c00000000070860190000006006000039000000000707004b00000ee70000c13d000009530650009c000000db0000213d0000004006500039000000400060043f00000020065000390000095607000041000000000076043500000001060000390000000000650435000000000605001900000ee70000013d000000380210008c00000b980000413d0000002002100270000009480310009c00000000030100190000000003022019000009480210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000009530440009c000000db0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000aae0000413d00000004040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f00000958044001c700000000004304350000000302200210000000f80220008900000000012101cf00000004020000290000002102200039000000000012043500000bb50000013d000000400800043d000009530980009c000000db0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000ad00000413d000000000a080433000000000a0a004b000001500000613d000000f80a3002100000094c0b000041000000000303004b00000000030a001900000000030b6019000000000a090433000009540aa0019700000000033a019f0000000000390435000000400300043d0000002009300039000000000a010433000000000b0a004b00000af00000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b00000ae90000413d00000000019a001900000000000104350000000009020433000000000a09004b00000afd0000613d000000000a000019000000000b1a0019000000200aa00039000000000c2a0019000000000c0c04330000000000cb0435000000000b9a004b00000af60000413d000000000119001900000000000104350000000002040433000000000902004b00000b0a0000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a29004b00000b030000413d000000000112001900000000000104350000000002050433000000000402004b00000b170000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000924004b00000b100000413d000000000112001900000000000104350000000002060433000000000402004b00000b240000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000524004b00000b1d0000413d000000000112001900000000000104350000000002070433000000000402004b00000b310000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000b2a0000413d000000000112001900000000000104350000000002080433000000000402004b00000b3e0000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000524004b00000b370000413d000000000112001900000000000104350000000001310049000000200210008a00000000002304350000001f02100039000000200100008a000000000212016f0000000005320019000000000225004b000000000200001900000001020040390000094d0450009c000000db0000213d0000000102200190000000db0000c13d000000400050043f000000230200008a0000000c060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b000000000800003100000000094800190000094c0a000041000000000b96004b000000000b000019000000000b0a80190000094c099001970000094c0c600197000000000d9c004b000000000a00801900000000099c013f0000094c0990009c00000000090b001900000000090a6019000000000909004b0000083e0000c13d0000000d090000290000000009960019000000000697034f000000000606043b0000094d0a60009c0000083e0000213d000000000a68004900000020089000390000094c09000041000000000ba8004b000000000b000019000000000b0920190000094c0aa001970000094c0c800197000000000dac004b0000000009008019000000000aac013f0000094c0aa0009c00000000090bc019000000000909004b0000083e0000c13d000000010960008c00000e9b0000c13d000000000687034f000000000606043b000000010700008a0000094c08000041000000000776004b000000000700001900000000070820190000094c066001970000094c0960009c00000000080080190000094c066001670000094c0660009c00000000070860190000006006000039000000000707004b00000f7a0000c13d000009530650009c000000db0000213d0000004006500039000000400060043f00000020065000390000095607000041000000000076043500000001060000390000000000650435000000000605001900000f7a0000013d000000400200043d000400000002001d000009530220009c000000db0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000ba40000413d00000004030000290000000003030433000000000303004b000001500000613d000000f80110021000000000030204330000095403300197000000000113019f0000094c01100167000000000012043500000060010000390000000c0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b00000c2a0000c13d0000000603000029000000000432034f000000000300003100000005050000290000000005530019000000000904043b0000094c04000041000000000659004b000000000600001900000000060480190000094c055001970000094c07900197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b0000083e0000c13d0000000b0400002900000000040404330000000a0500002900000000050504330000000906000029000000000606043300000007070000290000000007070433000000040800002900000000080804330000000d0a0000290000000009a90019000000000292034f000000000202043b0000094d0a20009c0000083e0000213d000000000323004900000020099000390000094c0a000041000000000b39004b000000000b000019000000000b0a20190000094c033001970000094c09900197000000000c39004b000000000a008019000000000339013f0000094c0330009c00000000030b001900000000030a6019000000000303004b0000083e0000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000094d02200197000000380320008c00000cc20000413d0000002003200270000009480420009c00000000040200190000000004032019000009480320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009530650009c000000db0000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a00000c140000413d0000000006050433000000000606004b000001500000613d00000000060404330000095406600197000000f807300210000000000667019f0000095a066001c700000000006404350000000303300210000000f80330008900000000023201cf0000002103500039000000000023043500000cdc0000013d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f00000001022001900000083e0000613d000000000101043b000000800210008c00000c840000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000804000029000000000442016f000000400200043d0000000004420019000000000524004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f000000020430003900000000044204360000002105300039000000050550027200000c710000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00000c690000413d000000000500004b00000c730000613d0000000005020433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c00000000010020190000002103200039000000000013043500000ca10000013d000000400200043d000009530320009c000000db0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000c8e0000413d0000000004020433000000000404004b000001500000613d000000f8041002100000094c05000041000000000101004b0000000001040019000000000105601900000000040304330000095404400197000000000114019f0000000000130435000000400100043d00000020031000390000000004020433000000000504004b00000cae0000613d000000000500001900000000063500190000002005500039000000000725001900000000070704330000000000760435000000000645004b00000ca70000413d00000000023400190000096a03000041000000000032043500000000021200490000001e0320008a000000000031043500000021022000390000000803000029000000000332016f0000000002130019000000000332004b000000000300001900000001030040390000094d0420009c000000db0000213d0000000103300190000000db0000c13d000000400020043f000000020200036700000bbd0000013d000000400500043d000009530350009c000000db0000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a00000ccc0000413d0000000004050433000000000404004b000001500000613d000000f80220021000000000040304330000095404400197000000000242019f0000095902200041000000000023043500000000020000310000000503000029000000000632001900000002030003670000000604000029000000000443034f000000000404043b0000094c07000041000000000864004b000000000800001900000000080780190000094c066001970000094c09400197000000000a69004b0000000007008019000000000669013f0000094c0660009c00000000060800190000000006076019000000000606004b0000083e0000c13d0000000d060000290000000006640019000000000363034f000000000403043b0000094d0340009c0000083e0000213d000000000242004900000020066000390000094c03000041000000000726004b000000000700001900000000070320190000094c022001970000094c08600197000000000928004b0000000003008019000000000228013f0000094c0220009c00000000020700190000000002036019000000000202004b0000083e0000c13d000000400200043d00000020032000390000000007050433000000000807004b00000d140000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b00000d0d0000413d000000000537001900000000000504350000000b0b00002900000000070b0433000000000807004b00000d220000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d1b0000413d000000000557001900000000000504350000000a0b00002900000000070b0433000000000807004b00000d300000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d290000413d00000000055700190000000000050435000000090b00002900000000070b0433000000000807004b00000d3e0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d370000413d00000000055700190000000000050435000000070b00002900000000070b0433000000000807004b00000d4c0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d450000413d00000000055700190000000000050435000000040b00002900000000070b0433000000000807004b00000d5a0000613d000000000800001900000000095800190000002008800039000000000ab80019000000000a0a04330000000000a90435000000000978004b00000d530000413d00000000055700190000001f0740018f00000000000504350000000206600367000000050840027200000d690000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b00000d610000413d000000000907004b00000d780000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b00000d850000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b00000d7e0000413d000000000145001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f0000094801000041000009480430009c000000000301801900000040033002100000000002020433000009480420009c00000000020180190000006002200210000000000232019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b0000290000083e0000613d00000002020003670000000d03000029000000000332034f000000000101043b000c00000001001d000000000103043b000000710310008c0000100e0000c13d000001e401b00039000000000312034f00000000010000310000000004b10049000000230440008a000000000303043b0000094c05000041000000000643004b000000000600001900000000060580190000094c044001970000094c07300197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000003430019000000000232034f000000000202043b0000094d0420009c0000083e0000213d000000000121004900000020033000390000094c04000041000000000513004b000000000500001900000000050420190000094c011001970000094c06300197000000000716004b0000000004008019000000000116013f0000094c0110009c00000000010500190000000001046019000000000101004b0000083e0000c13d0000000001000414000000000232001a0000094804300197000000d10000413d0000000003000031000000000523004b000000d10000413d0000000204400367000009480510009c000004200000213d0000000002230049000009480220019700000000022403df000000c0011002100000095e011001970000095f011001c700000000011203af0000801002000039251c25170000040f00000000030100190000006003300270000109480030019d000009480330019700030000000103550000000102200190000013900000613d0000003f013000390000096002100197000000400100043d0000000002210019000000000412004b000000000400001900000001040040390000094d0520009c000000db0000213d0000000104400190000000db0000c13d000000400020043f00000000023104360000001f04300039000000050440027200000e110000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000e090000413d000000000400004b00000e130000613d0000000104000031000000000443004b0000083e0000213d00000003050003670000001f0430018f000000050330027200000e230000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000e1b0000413d000000000604004b00000e320000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000e570000c13d0000000002020433000000400100043d0000004003100039000000000023043500000020021000390000000c030000290000000000320435000000400300003900000000003104350000096d0310009c000000db0000213d0000006003100039000000400030043f0000094803000041000009480420009c000000000203801900000040022002100000000001010433000009480410009c00000000010380190000006001100210000000000121019f0000000002000414000009480420009c0000000002038019000000c002200210000000000112019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000101043b000012550000013d000000400100043d00000044021000390000096c03000041000000000032043500000024021000390000001f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000380760008c00000ecd0000413d0000002007600270000009480860009c00000000080600190000000008072019000009480760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009530950009c000000db0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e840000413d0000000009050433000000000909004b000001500000613d00000000090804330000095409900197000000f80a70021000000000099a019f00000958099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000ee70000013d000000380760008c00000f600000413d0000002007600270000009480860009c00000000080600190000000008072019000009480760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000009530950009c000000db0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000eb60000413d0000000009050433000000000909004b000001500000613d00000000090804330000095409900197000000f80a70021000000000099a019f00000958099001c700000000009804350000000307700210000000f80770008900000000067601cf00000021075000390000000000670435000000000605001900000f7a0000013d000009530750009c000000db0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000ed60000413d0000000008050433000000000808004b000001500000613d000000f80660021000000000080704330000095408800197000000000668019f0000094c0660016700000000006704350000000006050019000000400500043d000009530750009c000000db0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000ef10000413d0000000009050433000000000909004b000001500000613d0000000009070433000009540990019700000959099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b0000094c0a000041000000000d9c004b000000000d000019000000000d0a80190000094c099001970000094c0ec00197000000000f9e004b000000000a00801900000000099e013f0000094c0990009c00000000090d001900000000090a6019000000000909004b0000083e0000c13d0000000009020433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b0000094d0db0009c0000083e0000213d0000000007b70049000000200cc000390000094c0d000041000000000e7c004b000000000e000019000000000e0d20190000094c077001970000094c0cc00197000000000f7c004b000000000d00801900000000077c013f0000094c0770009c00000000070e001900000000070d6019000000000707004b0000083e0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000094d09700197000000380790008c000010640000413d0000002007900270000009480890009c000000000709a019000009480890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009530b70009c000000db0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000f4a0000413d000000000b070433000000000b0b004b000001500000613d000000000b0a0433000009540bb00197000000f80c800210000000000bbc019f0000095a0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf000000210970003900000000008904350000107d0000013d000009530750009c000000db0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000f690000413d0000000008050433000000000808004b000001500000613d000000f80660021000000000080704330000095408800197000000000668019f0000094c0660016700000000006704350000000006050019000000400500043d000009530750009c000000db0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000f840000413d0000000009050433000000000909004b000001500000613d0000000009070433000009540990019700000959099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b0000094c0a000041000000000d9c004b000000000d000019000000000d0a80190000094c099001970000094c0ec00197000000000f9e004b000000000a00801900000000099e013f0000094c0990009c00000000090d001900000000090a6019000000000909004b0000083e0000c13d0000000009030433000000000a0604330000000d0d000029000000000cdc0019000000000bcb034f000000000b0b043b0000094d0db0009c0000083e0000213d0000000007b70049000000200cc000390000094c0d000041000000000e7c004b000000000e000019000000000e0d20190000094c077001970000094c0cc00197000000000f7c004b000000000d00801900000000077c013f0000094c0770009c00000000070e001900000000070d6019000000000707004b0000083e0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000094d09700197000000380790008c000011250000413d0000002007900270000009480890009c000000000709a019000009480890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000009530b70009c000000db0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a00000fdd0000413d000000000b070433000000000b0b004b000001500000613d000000000b0a0433000009540bb00197000000f80c800210000000000bbc019f0000095a0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf000000210970003900000000008904350000113e0000013d0000001f0430018f000000050230027200000ffe0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000ff70000413d000000000504004b0000100c0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000251e00010430000000000301004b000011200000c13d0000010401b00039000000000112034f000000000101043b000000800210008c000011e10000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000b00000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f00000002032000390000000b040000290000000003340436000000210420003900000005044002720000104f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000010470000413d000000000400004b000010510000613d0000000b040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000b0200002900000021022000390000000000120435000012010000013d000000400700043d000009530a70009c000000db0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a0000106d0000413d000000000a070433000000000a0a004b000001500000613d000000f809900210000000000a080433000009540aa001970000000009a9019f00000959099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b0000094c0a000041000000000b83004b000000000b000019000000000b0a80190000094c088001970000094c0c300197000000000d8c004b000000000a00801900000000088c013f0000094c0880009c00000000080b001900000000080a6019000000000808004b0000083e0000c13d0000000d080000290000000003830019000000000434034f000000000804043b0000094d0480009c0000083e0000213d000000000489004900000020093000390000094c03000041000000000a49004b000000000a000019000000000a0320190000094c044001970000094c0b900197000000000c4b004b000000000300801900000000044b013f0000094c0440009c00000000030ac019000000000303004b0000083e0000c13d000000400300043d00000020043000390000095b0a0000410000000000a40435000000210a300039000000000b070433000000000c0b004b000010b50000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b000010ae0000413d0000000007ab00190000000000070435000000000a020433000000000b0a004b000010c20000613d000000000b000019000000000c7b0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000cab004b000010bb0000413d00000000027a001900000000000204350000000007060433000000000a07004b000010cf0000613d000000000a000019000000000b2a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b000010c80000413d00000000022700190000001f0680018f000000000002043500000002079003670000000509800272000010de0000613d000000000a000019000000050ba00210000000000cb20019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000010d60000413d000000000a06004b000010ed0000613d0000000509900210000000000797034f00000000099200190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000282001900000000000204350000000006050433000000000706004b000010fa0000613d000000000700001900000000082700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000010f30000413d000000000226001900000000000204350000000002320049000000200520008a00000000005304350000001f02200039000000000212016f0000000001320019000000000221004b000000000200001900000001020040390000094d0510009c000000db0000213d0000000102200190000000db0000c13d000000400010043f0000094801000041000009480240009c0000000002010019000000000204401900000040022002100000000003030433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b00002900000daa0000c13d0000083e0000013d000000020210008c000012510000c13d0000000d01000029251c1e500000040f000012550000013d000000400700043d000009530a70009c000000db0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a0000112e0000413d000000000a070433000000000a0a004b000001500000613d000000f809900210000000000a080433000009540aa001970000000009a9019f00000959099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b0000094c0a000041000000000b82004b000000000b000019000000000b0a80190000094c088001970000094c0c200197000000000d8c004b000000000a00801900000000088c013f0000094c0880009c00000000080b001900000000080a6019000000000808004b0000083e0000c13d0000000d080000290000000002820019000000000424034f000000000804043b0000094d0480009c0000083e0000213d000000000489004900000020092000390000094c02000041000000000a49004b000000000a000019000000000a0220190000094c044001970000094c0b900197000000000c4b004b000000000200801900000000044b013f0000094c0440009c00000000020ac019000000000202004b0000083e0000c13d000000400200043d00000020042000390000095c0a0000410000000000a40435000000210a200039000000000b070433000000000c0b004b000011760000613d000000000c000019000000000dac0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dbc004b0000116f0000413d0000000007ab00190000000000070435000000000a030433000000000b0a004b000011830000613d000000000b000019000000000c7b0019000000200bb00039000000000d3b0019000000000d0d04330000000000dc0435000000000cab004b0000117c0000413d00000000037a001900000000000304350000000007060433000000000a07004b000011900000613d000000000a000019000000000b3a0019000000200aa00039000000000c6a0019000000000c0c04330000000000cb0435000000000b7a004b000011890000413d00000000033700190000001f0680018f0000000000030435000000020790036700000005098002720000119f0000613d000000000a000019000000050ba00210000000000cb30019000000000bb7034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000011970000413d000000000a06004b000011ae0000613d0000000509900210000000000797034f00000000099300190000000306600210000000000a090433000000000a6a01cf000000000a6a022f000000000707043b0000010006600089000000000767022f00000000066701cf0000000006a6019f0000000000690435000000000383001900000000000304350000000006050433000000000706004b000011bb0000613d000000000700001900000000083700190000002007700039000000000957001900000000090904330000000000980435000000000867004b000011b40000413d000000000336001900000000000304350000000003230049000000200530008a00000000005204350000001f03300039000000000313016f0000000001230019000000000331004b000000000300001900000001030040390000094d0510009c000000db0000213d0000000103300190000000db0000c13d000000400010043f0000094801000041000009480340009c0000000003010019000000000304401900000040033002100000000002020433000009480420009c00000000020180190000006002200210000000000232019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000000c0b00002900000daa0000c13d0000083e0000013d000000400200043d000b00000002001d000009530220009c000000db0000213d0000000b030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000011ed0000413d0000000b030000290000000003030433000000000303004b000001500000613d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f0000000000120435000000a401b000390000000201100367000000000201043b000000800120008c000012710000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000123e0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000012360000413d000000000500004b000012400000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000128e0000013d000000010110008c000012600000c13d0000000d01000029251c18090000040f000000400200043d00000020032000390000000c04000029000000000043043500000000001204350000094801000041000009480320009c000000000102401900000040011002100000096e011001c70000251d0001042e000000400200043d000d00000002001d0000094f0100004100000000001204350000000401200039251c17ff0000040f0000000d0400002900000000014100490000094802000041000009480310009c0000000001028019000009480340009c000000000204401900000040022002100000006001100210000000000121019f0000251e00010430000000400100043d000009530310009c000000db0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000127b0000413d0000000004010433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000006402b000390000000202200367000000000302043b000000800230008c000012de0000413d0000008002300270000009550430009c000000000203a019000009550430009c0000000004000019000000100400203900000008054001bf0000094d0620009c000000000405201900000040052002700000094d0620009c000000000205201900000004054001bf000009480620009c00000000040520190000002005200270000009480620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b000000000600001900000001060040390000094d0750009c000000db0000213d0000000106600190000000db0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000012cb0000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000012c30000413d000000000600004b000012cd0000613d0000000006020433000000000606004b000001500000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000012fb0000013d000000400200043d000009530420009c000000db0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000012e80000413d0000000005020433000000000505004b000001500000613d000000f8053002100000094c06000041000000000303004b0000000003050019000000000306601900000000050404330000095405500197000000000335019f0000000000340435000000400300043d000a00000003001d00000020033000390000000004010433000000000504004b000013090000613d000000000500001900000000063500190000002005500039000000000715001900000000070704330000000000760435000000000645004b000013020000413d000000000134001900000000000104350000000003020433000000000403004b000013160000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b0000130f0000413d000000000113001900000000000104350000000a030000290000000001310049000000200210008a00000000002304350000001f01100039000000200200008a000800000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000900000002001d0000094d0220009c000000db0000213d0000000101100190000000db0000c13d0000000901000029000000400010043f000009530110009c000000db0000213d00000000040b001900000044014000390000000201100367000000000101043b00000009050000290000004002500039000000400020043f0000002002500039000009570300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c000013ab0000413d0000008002100270000009550310009c000000000201a019000009550310009c0000000003000019000000100300203900000008043001bf0000094d0520009c000000000304201900000040042002700000094d0520009c000000000204201900000004043001bf000009480520009c00000000030420190000002004200270000009480520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000804000029000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b000000000400001900000001040040390000094d0530009c000000db0000213d0000000104400190000000db0000c13d000000400030043f000000020320003900000007040000290000000003340436000000210420003900000005044002720000137b0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000013730000413d000000000400004b0000137d0000613d00000007040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f000009560440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000070200002900000021022000390000000000120435000013cb0000013d0000001f0430018f00000005023002720000139b0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000013940000413d000000000504004b000013a90000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000251e00010430000000400200043d000700000002001d000009530220009c000000db0000213d00000007030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000013b70000413d00000007030000290000000003030433000000000303004b000001500000613d000000f8031002100000094c04000041000000000101004b0000000001030019000000000104601900000000030204330000095403300197000000000113019f0000000000120435000000230100008a00000000020b00190000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000300000004001d00000000044300190000094c05000041000000000641004b000000000600001900000000060580190000094c044001970000094c07100197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000004410019000000000142034f000000000101043b0000094d0510009c0000083e0000213d000000000513004900000020034000390000094c04000041000000000653004b000000000600001900000000060420190000094c055001970000094c07300197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b0000083e0000c13d000000010410008c0000141a0000c13d000000000132034f000000000101043b000000010200008a0000094c03000041000000000221004b000000000200001900000000020320190000094c011001970000094c0410009c00000000030080190000094c011001670000094c0110009c000000000102001900000000010360190000006002000039000600000002001d000000000101004b0000146d0000c13d000000400100043d000600000001001d000009530110009c000000db0000213d00000006030000290000004001300039000000400010043f000000200130003900000956020000410000000000210435000000010100003900000000001304350000146d0000013d000000380210008c000014500000413d0000002002100270000009480310009c00000000030100190000000003022019000009480210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000600000004001d000009530440009c000000db0000213d000000000232019f00000006040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000014380000413d00000006040000290000000004040433000000000404004b000001500000613d00000000040304330000095404400197000000f805200210000000000445019f00000958044001c700000000004304350000000302200210000000f80220008900000000012101cf0000000602000029000000210220003900000000001204350000146d0000013d000000400200043d000600000002001d000009530220009c000000db0000213d00000006030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a0000145c0000413d00000006030000290000000003030433000000000303004b000001500000613d000000f80110021000000000030204330000095403300197000000000113019f0000094c01100167000000000012043500000000030000310000000301000029000000000513001900000000010b0019000001e4011000390000000202000367000000000412034f000000000404043b0000094c06000041000000000754004b000000000700001900000000070680190000094c055001970000094c08400197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000505004b0000083e0000c13d0000000d050000290000000004540019000000000542034f000000000505043b0000094d0650009c0000083e0000213d000000200650008c0000083e0000413d000000000553004900000020034000390000094c04000041000000000653004b000000000600001900000000060420190000094c055001970000094c07300197000000000857004b0000000004008019000000000557013f0000094c0550009c000000000406c019000000000404004b0000083e0000c13d000000000232034f000000000202043b000000800320008c000014ed0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000500000005001d000000000554004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000505000029000000000445043600000021053000390000000505500272000014d80000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000014d00000413d000000000500004b000014da0000613d00000005050000290000000005050433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000000503000029000000210330003900000000002304350000150d0000013d000000400300043d000500000003001d000009530330009c000000db0000213d00000005040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000014f90000413d00000005040000290000000004040433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000003000031000000030200002900000000052300190000000202000367000000000412034f000000000404043b0000094c06000041000000000754004b000000000700001900000000070680190000094c055001970000094c08400197000000000958004b0000000006008019000000000558013f0000094c0550009c00000000050700190000000005066019000000000505004b0000083e0000c13d0000000d050000290000000004540019000000000542034f000000000505043b0000094d0650009c0000083e0000213d000000400650008c0000083e0000413d000000000353004900000020054000390000094c06000041000000000735004b000000000700001900000000070620190000094c033001970000094c05500197000000000835004b0000000006008019000000000335013f0000094c0330009c00000000030700190000000003066019000000000303004b0000083e0000c13d0000004003400039000000000232034f000000000202043b000000800320008c0000158d0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c00000000030000190000000103002039000000000334001900000041043000390000000805000029000000000454016f000000400500043d0000000004450019000400000005001d000000000554004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000405000029000000000445043600000021053000390000000505500272000015780000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000015700000413d000000000500004b0000157a0000613d00000004050000290000000005050433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000040300002900000021033000390000000000230435000015ad0000013d000000400300043d000400000003001d000009530330009c000000db0000213d00000004040000290000004003400039000000400030043f0000000103000039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000015990000413d00000004040000290000000004040433000000000404004b000001500000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f00000000002304350000000003000031000000030200002900000000042300190000000202000367000000000112034f000000000101043b0000094c05000041000000000641004b000000000600001900000000060580190000094c044001970000094c07100197000000000847004b0000000005008019000000000447013f0000094c0440009c00000000040600190000000004056019000000000404004b0000083e0000c13d0000000d040000290000000001410019000000000412034f000000000404043b0000094d0540009c0000083e0000213d000000000343004900000020051000390000094c06000041000000000735004b000000000700001900000000070620190000094c033001970000094c05500197000000000835004b0000000006008019000000000335013f0000094c0330009c00000000030700190000000003066019000000000303004b0000083e0000c13d000000410340008c000001500000413d0000006001100039000000000112034f000000000101043b000000f801100270000100000001001d0000001b0110008a000000020110008c0000164f0000813d0000014401b00039000000000112034f000000000101043b000000000101004b000016610000613d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f00000001022001900000083e0000613d000000000201043b0000000101200210000000000302004b000015fc0000613d000000090300008a000000000331004b000000d10000213d00000000322100d9000000020220008c000000d10000c13d000000010300002900000000011300190000000802100039000000000132004b000000d10000413d000000800120008c000100000002001d000016610000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c00000000010000190000000101002039000000000313001900000041013000390000000804000029000000000441016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000000db0000213d0000000105500190000000db0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000163c0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000016340000413d000000000500004b0000163e0000613d0000000005010433000000000505004b000001500000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000167e0000013d000000400100043d00000044021000390000096b03000041000000000032043500000024021000390000000f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e00010430000000400100043d000009530210009c000000db0000213d0000004002100039000000400020043f0000000102000039000000000221043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a0000166b0000413d0000000003010433000000000303004b000001500000613d0000000105000029000000f8035002100000094c04000041000000000505004b000000000304601900000000040204330000095404400197000000000334019f000000000032043500000000020000310000000303000029000000000332001900000002080003670000000204000029000000000448034f000000000904043b0000094c04000041000000000539004b000000000500001900000000050480190000094c033001970000094c06900197000000000736004b0000000004008019000000000336013f0000094c0330009c00000000030500190000000003046019000000000303004b0000083e0000c13d0000000b0300002900000000030304330000000a0400002900000000040404330000000905000029000000000505043300000007060000290000000006060433000000060700002900000000070704330000000d0a0000290000000009a90019000000000898034f000000000808043b0000094d0a80009c0000083e0000213d000000000282004900000020099000390000094c0a000041000000000b29004b000000000b000019000000000b0a20190000094c022001970000094c09900197000000000c29004b000000000a008019000000000229013f0000094c0220009c00000000020b001900000000020a6019000000000202004b0000083e0000c13d00000000023400190000000002520019000000000262001900000000027200190000000002820019000000050300002900000000030304330000000002320019000000040300002900000000030304330000000002320019000000000301043300000000023200190000094d02200197000000380320008c000016f30000413d0000002003200270000009480420009c00000000040200190000000004032019000009480320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400500043d000009530650009c000000db0000213d000000000343019f0000004004500039000000400040043f0000000204300039000000000445043600000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b0000000000890435000000010770003a000016dd0000413d0000000006050433000000000606004b000001500000613d00000000060404330000095406600197000000f807300210000000000667019f0000095a066001c700000000006404350000000303300210000000f80330008900000000023201cf000000210350003900000000002304350000170d0000013d000000400500043d000009530350009c000000db0000213d0000004003500039000000400030043f0000000103000039000000000335043600000000040000310000000204400367000000000600001900000005076002100000000008730019000000000774034f000000000707043b0000000000780435000000010660003a000016fd0000413d0000000004050433000000000404004b000001500000613d000000f80220021000000000040304330000095404400197000000000242019f0000095902200041000000000023043500000000020000310000000303000029000000000632001900000002030003670000000204000029000000000443034f000000000404043b0000094c07000041000000000864004b000000000800001900000000080780190000094c066001970000094c09400197000000000a69004b0000000007008019000000000669013f0000094c0660009c00000000060800190000000006076019000000000606004b0000083e0000c13d0000000d060000290000000006640019000000000363034f000000000403043b0000094d0340009c0000083e0000213d000000000242004900000020066000390000094c03000041000000000726004b000000000700001900000000070320190000094c022001970000094c08600197000000000928004b0000000003008019000000000228013f0000094c0220009c00000000020700190000000002036019000000000202004b0000083e0000c13d000000400200043d00000020032000390000000007050433000000000807004b000017450000613d000000000800001900000000093800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000978004b0000173e0000413d000000000537001900000000000504350000000b070000290000000007070433000000000807004b000017540000613d0000000008000019000000000958001900000020088000390000000b0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000174c0000413d000000000557001900000000000504350000000a070000290000000007070433000000000807004b000017630000613d0000000008000019000000000958001900000020088000390000000a0a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000175b0000413d0000000005570019000000000005043500000009070000290000000007070433000000000807004b000017720000613d000000000800001900000000095800190000002008800039000000090a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b0000176a0000413d0000000005570019000000000005043500000007070000290000000007070433000000000807004b000017810000613d000000000800001900000000095800190000002008800039000000070a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017790000413d0000000005570019000000000005043500000006070000290000000007070433000000000807004b000017900000613d000000000800001900000000095800190000002008800039000000060a000029000000000aa80019000000000a0a04330000000000a90435000000000978004b000017880000413d00000000055700190000001f0740018f0000000000050435000000020660036700000005084002720000179f0000613d0000000009000019000000050a900210000000000ba50019000000000aa6034f000000000a0a043b0000000000ab04350000000109900039000000000a89004b000017970000413d000000000907004b000017ae0000613d0000000508800210000000000686034f00000000088500190000000307700210000000000908043300000000097901cf000000000979022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000696019f0000000000680435000000000445001900000000000404350000000005010433000000000605004b000017bb0000613d000000000600001900000000074600190000002006600039000000000816001900000000080804330000000000870435000000000756004b000017b40000413d0000000001450019000000000001043500000005040000290000000004040433000000000504004b000017ca0000613d0000000005000019000000000615001900000020055000390000000507000029000000000775001900000000070704330000000000760435000000000645004b000017c20000413d0000000001140019000000000001043500000004040000290000000004040433000000000504004b000017d90000613d0000000005000019000000000615001900000020055000390000000407000029000000000775001900000000070704330000000000760435000000000645004b000017d10000413d000000000114001900000000000104350000000001210049000000200410008a00000000004204350000001f011000390000000804000029000000000441016f0000000001240019000000000441004b000000000400001900000001040040390000094d0510009c000000db0000213d0000000104400190000000db0000c13d000000400010043f0000094801000041000009480430009c000000000301801900000040033002100000000002020433000009480420009c00000000020180190000006002200210000000000232019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f00000001022001900000083e0000613d000000000101043b000012550000013d000000400210003900000972030000410000000000320435000000200210003900000013030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0006000000000002000400000001001d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f000000010220019000001e300000613d000000000201043b000000800120008c000018650000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c00001e320000213d000000010550019000001e320000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000018520000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000184a0000413d000000000500004b000018540000613d0000000005010433000000000505004b00001e380000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000018820000013d000000400100043d000009530310009c00001e320000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a0000186f0000413d0000000004010433000000000404004b00001e380000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c000018d30000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b000000000600001900000001060040390000094d0750009c00001e320000213d000000010660019000001e320000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000018c00000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000018b80000413d000000000600004b000018c20000613d0000000006030433000000000606004b00001e380000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000018f00000013d000000400300043d000009530430009c00001e320000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000018dd0000413d0000000005030433000000000505004b00001e380000613d000000f8052002100000094c06000041000000000202004b0000000002050019000000000206601900000000050404330000095405500197000000000225019f00000000002404350000000402000029000000a0022000390000000202200367000000000202043b000000800420008c000019410000413d0000008004200270000009550520009c000000000402a019000009550520009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c00001e320000213d000000010770019000001e320000c13d000000400060043f00000002065000390000000006640436000000210750003900000005077002720000192e0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000019260000413d000000000700004b000019300000613d0000000007040433000000000707004b00001e380000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c0000000002002019000000210540003900000000002504350000195e0000013d000000400400043d000009530540009c00001e320000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a0000194b0000413d0000000006040433000000000606004b00001e380000613d000000f8062002100000094c07000041000000000202004b0000000002060019000000000207601900000000060504330000095406600197000000000226019f0000000000250435000000040200002900000060022000390000000202200367000000000202043b000000800520008c000019af0000413d0000008005200270000009550620009c000000000502a019000009550620009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c00001e320000213d000000010880019000001e320000c13d000000400070043f00000002076000390000000007750436000000210860003900000005088002720000199c0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b000019940000413d000000000800004b0000199e0000613d0000000008050433000000000808004b00001e380000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000019cc0000013d000000400500043d000009530650009c00001e320000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000019b90000413d0000000007050433000000000707004b00001e380000613d000000f8072002100000094c08000041000000000202004b0000000002070019000000000208601900000000070604330000095407700197000000000227019f0000000000260435000000400600043d000009530260009c00001e320000213d000000040900002900000040029000390000000202200367000000000202043b0000004007600039000000400070043f0000002007600039000009570800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000120029000390000000202200367000000000202043b000000800720008c00001a2d0000413d0000008007200270000009550820009c000000000702a019000009550820009c0000000008000019000000100800203900000008098001bf0000094d0a70009c000000000809201900000040097002700000094d0a70009c000000000709201900000004098001bf000009480a70009c00000000080920190000002009700270000009480a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a0040390000094d0b90009c00001e320000213d000000010aa0019000001e320000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200001a1a0000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00001a120000413d000000000a00004b00001a1c0000613d000000000a070433000000000a0a004b00001e380000613d000000000a090433000009540aa00197000000f80b800210000000000aab019f000009560aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500001a4a0000013d000000400700043d000009530870009c00001e320000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00001a370000413d0000000009070433000000000909004b00001e380000613d000000f8092002100000094c0a000041000000000202004b000000000209001900000000020a601900000000090804330000095409900197000000000229019f0000000000280435000000400200043d00000020082000390000000009010433000000000a09004b00001a570000613d000000000a000019000000000b8a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b9a004b00001a500000413d000000000189001900000000000104350000000008030433000000000908004b00001a640000613d0000000009000019000000000a1900190000002009900039000000000b390019000000000b0b04330000000000ba0435000000000a89004b00001a5d0000413d000000000118001900000000000104350000000003040433000000000803004b00001a710000613d000000000800001900000000091800190000002008800039000000000a480019000000000a0a04330000000000a90435000000000938004b00001a6a0000413d000000000113001900000000000104350000000003050433000000000403004b00001a7e0000613d000000000400001900000000081400190000002004400039000000000954001900000000090904330000000000980435000000000834004b00001a770000413d000000000113001900000000000104350000000003060433000000000403004b00001a8b0000613d000000000400001900000000051400190000002004400039000000000864001900000000080804330000000000850435000000000534004b00001a840000413d000000000113001900000000000104350000000003070433000000000403004b00001a980000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b00001a910000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b000000000100001900000001010040390000094d0350009c00001e320000213d000000010110019000001e320000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000094c09000041000000000a16004b000000000a000019000000000a0980190000094c011001970000094c0b600197000000000c1b004b000000000900801900000000011b013f0000094c0110009c00000000010a00190000000001096019000000000101004b00001e300000c13d00000004010000290000000001160019000000000617034f000000000606043b0000094d0960009c00001e300000213d000000000968004900000020081000390000094c01000041000000000a98004b000000000a000019000000000a0120190000094c099001970000094c0b800197000000000c9b004b000000000100801900000000099b013f0000094c0990009c00000000010ac019000000000101004b00001e300000c13d000000010160008c00001af50000c13d000000000187034f000000000101043b000000010300008a0000094c06000041000000000331004b000000000300001900000000030620190000094c011001970000094c0710009c00000000060080190000094c011001670000094c0110009c000000000103001900000000010660190000006006000039000000000101004b00001b410000c13d000009530150009c00001e320000213d0000004001500039000000400010043f00000020015000390000095603000041000000000031043500000001010000390000000000150435000000000605001900001b410000013d000000380160008c00001b270000413d0000002001600270000009480360009c00000000030600190000000003012019000009480160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009530350009c00001e320000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a00001b100000413d0000000001050433000000000101004b00001e380000613d00000000010804330000095401100197000000f803700210000000000113019f00000958011001c700000000001804350000000301700210000000f80110008900000000011601cf00000021035000390000000000130435000000000605001900001b410000013d000009530150009c00001e320000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a00001b300000413d0000000001050433000000000101004b00001e380000613d000000f80160021000000000030704330000095403300197000000000113019f0000094c0110016700000000001704350000000006050019000000400500043d000009530150009c00001e320000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a00001b4c0000413d0000000001050433000000000101004b00001e380000613d0000000001070433000009540110019700000959011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b0000094c0c000041000000000d1b004b000000000d000019000000000d0c80190000094c011001970000094c0eb00197000000000f1e004b000000000c00801900000000011e013f0000094c0110009c00000000010d001900000000010c6019000000000101004b00001e300000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b0000094d0cb0009c00001e300000213d000000000cb8004900000020081000390000094c01000041000000000dc8004b000000000d000019000000000d0120190000094c0cc001970000094c0e800197000000000fce004b0000000001008019000000000cce013f0000094c0cc0009c00000000010dc019000000000101004b00001e300000c13d0000002001b0008c00001e300000413d000000000187034f000000000801043b000000800180008c00001bd60000413d0000008001800270000009550780009c000000000108a019000009550780009c00000000070000190000001007002039000000080b7001bf0000094d0c10009c00000000070b2019000000400b1002700000094d0c10009c00000000010b2019000000040b7001bf000009480c10009c00000000070b2019000000200b100270000009480c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c0040390000094d0d10009c00001e320000213d000000010cc0019000001e320000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d10027200001bc20000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b00001bba0000413d000000000100004b00001bc40000613d0000000001070433000000000101004b00001e380000613d00000000010c04330000095401100197000000f803b00210000000000113019f000009560110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c000000000103001900000000010020190000002103700039000000000013043500001bf20000013d000000400700043d000009530170009c00001e320000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a00001be00000413d0000000001070433000000000101004b00001e380000613d000000f8018002100000094c03000041000000000808004b000000000103601900000000030b04330000095403300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000094c03000041000000000d1b004b000000000d000019000000000d0380190000094c011001970000094c0eb00197000000000f1e004b000000000300801900000000011e013f0000094c0110009c00000000010d00190000000001036019000000000101004b00001e300000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000094d01d0009c00001e300000213d0000000001dc00490000002003b000390000094c0c000041000000000e13004b000000000e000019000000000e0c20190000094c011001970000094c03300197000000000f13004b000000000c008019000000000113013f0000094c0110009c00000000010e001900000000010c6019000000000101004b00001e300000c13d0000004001d0008c00001e300000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c00001c6e0000413d0000008001b002700000095503b0009c00000000010ba0190000095503b0009c0000000003000019000000100300203900000008083001bf0000094d0c10009c000000000308201900000040081002700000094d0c10009c000000000108201900000004083001bf000009480c10009c00000000030820190000002008100270000009480c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d0040390000094d0310009c00001e320000213d0000000103d0019000001e320000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e10027200001c5a0000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b00001c520000413d000000000100004b00001c5c0000613d0000000001080433000000000101004b00001e380000613d00000000010d04330000095401100197000000f803c00210000000000113019f000009560110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c000000000103001900000000010020190000002103800039000000000013043500001c8a0000013d000000400800043d000009530180009c00001e320000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a00001c780000413d0000000001080433000000000101004b00001e380000613d000000f801b002100000094c0300004100000000090b004b000000000103601900000000030c04330000095403300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b0000094c0300004100000000091a004b000000000900001900000000090380190000094c011001970000094c0da00197000000000e1d004b000000000300801900000000011d013f0000094c0110009c00000000010900190000000001036019000000000101004b00001e300000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000094d01d0009c00001e300000213d0000000001dc00490000002003a000390000094c09000041000000000c13004b000000000c000019000000000c0920190000094c011001970000094c03300197000000000e13004b0000000009008019000000000113013f0000094c0110009c00000000010c00190000000001096019000000000101004b00001e300000c13d0000004101d0008c00001e380000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c90000094c0c000041000000000101043b000000f8011002700000001b0310008c00001cc50000613d000000000b000415000000050bb0008a000000200bb000c90000095b0c0000410000001c0110008c00001e3e0000c13d000000400a00043d0000095301a0009c00001e320000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a00001ccf0000413d00000000010a0433000000000101004b00001e380000613d00000000010d043300000954011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b0000094c0300004100000000091f004b000000000900001900000000090380190000094c011001970000094c0cf00197000000000d1c004b000000000300801900000000011c013f0000094c0110009c00000000010900190000000001036019000000000101004b00001e300000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000094d03e0009c00001e300000213d0000000003eb004900000020011000390000094c09000041000000000b31004b000000000b000019000000000b0920190000094c033001970000094c01100197000000000f31004b0000000009008019000000000131013f0000094c0110009c00000000010b00190000000001096019000000000101004b00001e300000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a043300000000013100190000094d0c1001970000003801c0008c00001d480000413d0000002001c002700000094803c0009c00000000030c001900000000030120190000094801c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095303b0009c00001e320000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a00001d320000413d00000000010b0433000000000101004b00001e380000613d00000000010d04330000095401100197000000f803900210000000000113019f0000095a011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b00039000000000013043500001d620000013d000000400b00043d0000095301b0009c00001e320000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a00001d520000413d00000000010b0433000000000101004b00001e380000613d000000f801c0021000000000030904330000095403300197000000000131019f00000959011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000094c09000041000000000d13004b000000000d000019000000000d0980190000094c011001970000094c0e300197000000000f1e004b000000000900801900000000011e013f0000094c0110009c00000000010d00190000000001096019000000000101004b00001e300000c13d00000004010000290000000001130019000000000314034f000000000903043b0000094d0390009c00001e300000213d00000000039c0049000000200c1000390000094c0100004100000000043c004b000000000400001900000000040120190000094c033001970000094c0dc00197000000000e3d004b000000000100801900000000033d013f0000094c0330009c000000000104c019000000000101004b00001e300000c13d000000400300043d00000020043000390000095b01000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b00001d9c0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b00001d950000413d000000000bde001900000000000b0435000000000d02043300000000010d004b00001da90000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b00001da20000413d0000000002bd00190000000000020435000000000b06043300000000010b004b00001db60000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b00001daf0000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c90027200001dc50000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b00001dbd0000413d000000000106004b00001dd40000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b00001de10000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b00001dda0000413d0000000002260019000000000002043500000000050a0433000000000105004b00001dee0000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b00001de70000413d000000000225001900000000000204350000000005070433000000000105004b00001dfb0000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b00001df40000413d000000000225001900000000000204350000000005080433000000000105004b00001e080000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b00001e010000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b000000000200001900000001020040390000094d0410009c00001e320000213d000000010220019000001e320000c13d000000400010043f00000948010000410000000404000029000009480240009c0000000002010019000000000204401900000040022002100000000003030433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f000000010220019000001e300000613d000000000101043b000000000001042d00000000010000190000251e00010430000009700100004100000000001004350000004101000039000000040010043f00000971010000410000251e00010430000009700100004100000000001004350000003201000039000000040010043f00000971010000410000251e00010430000000400100043d00000044021000390000096b03000041000000000032043500000024021000390000000f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e000104300006000000000002000400000001001d0000095101000041000000000010043900000948010000410000000002000414000009480320009c0000000001024019000000c00110021000000952011001c70000800b02000039251c25120000040f0000000102200190000024f20000613d000000000201043b000000800120008c00001eac0000413d0000008001200270000009550320009c000000000102a019000009550320009c0000000003000019000000100300203900000008043001bf0000094d0510009c000000000304201900000040041002700000094d0510009c000000000104201900000004043001bf000009480510009c00000000030420190000002004100270000009480510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000094d0640009c000024f40000213d0000000105500190000024f40000c13d000000400040043f000000020430003900000000044104360000002105300039000000050550027200001e990000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b00001e910000413d000000000500004b00001e9b0000613d0000000005010433000000000505004b000024fa0000613d00000000050404330000095405500197000000f806300210000000000556019f000009560550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c00000000020020190000002103100039000000000023043500001ec90000013d000000400100043d000009530310009c000024f40000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00001eb60000413d0000000004010433000000000404004b000024fa0000613d000000f8042002100000094c05000041000000000202004b0000000002040019000000000205601900000000040304330000095404400197000000000224019f0000000000230435000000040200002900000100022000390000000202200367000000000202043b000000800320008c00001f1a0000413d0000008003200270000009550420009c000000000302a019000009550420009c0000000004000019000000100400203900000008054001bf0000094d0630009c000000000405201900000040053002700000094d0630009c000000000305201900000004054001bf000009480630009c00000000040520190000002005300270000009480630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b000000000600001900000001060040390000094d0750009c000024f40000213d0000000106600190000024f40000c13d000000400050043f000000020540003900000000055304360000002106400039000000050660027200001f070000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b00001eff0000413d000000000600004b00001f090000613d0000000006030433000000000606004b000024fa0000613d00000000060504330000095406600197000000f807400210000000000667019f000009560660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c00000000020020190000002104300039000000000024043500001f370000013d000000400300043d000009530430009c000024f40000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a00001f240000413d0000000005030433000000000505004b000024fa0000613d000000f8052002100000094c06000041000000000202004b0000000002050019000000000206601900000000050404330000095405500197000000000225019f00000000002404350000000402000029000000c0022000390000000202200367000000000202043b000000800420008c00001f880000413d0000008004200270000009550520009c000000000402a019000009550520009c0000000005000019000000100500203900000008065001bf0000094d0740009c000000000506201900000040064002700000094d0740009c000000000406201900000004065001bf000009480740009c00000000050620190000002006400270000009480740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b000000000700001900000001070040390000094d0860009c000024f40000213d0000000107700190000024f40000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200001f750000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00001f6d0000413d000000000700004b00001f770000613d0000000007040433000000000707004b000024fa0000613d00000000070604330000095407700197000000f808500210000000000778019f000009560770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500001fa50000013d000000400400043d000009530540009c000024f40000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00001f920000413d0000000006040433000000000606004b000024fa0000613d000000f8062002100000094c07000041000000000202004b0000000002060019000000000207601900000000060504330000095406600197000000000226019f00000000002504350000000402000029000000a0022000390000000202200367000000000202043b000000800520008c00001ff60000413d0000008005200270000009550620009c000000000502a019000009550620009c0000000006000019000000100600203900000008076001bf0000094d0850009c000000000607201900000040075002700000094d0850009c000000000507201900000004076001bf000009480850009c00000000060720190000002007500270000009480850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b000000000800001900000001080040390000094d0970009c000024f40000213d0000000108800190000024f40000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200001fe30000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00001fdb0000413d000000000800004b00001fe50000613d0000000008050433000000000808004b000024fa0000613d00000000080704330000095408800197000000f809600210000000000889019f000009560880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c000000000200201900000021065000390000000000260435000020130000013d000000400500043d000009530650009c000024f40000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a000020000000413d0000000007050433000000000707004b000024fa0000613d000000f8072002100000094c08000041000000000202004b0000000002070019000000000208601900000000070604330000095407700197000000000227019f0000000000260435000000040200002900000060022000390000000202200367000000000202043b000000800620008c000020640000413d0000008006200270000009550720009c000000000602a019000009550720009c0000000007000019000000100700203900000008087001bf0000094d0960009c000000000708201900000040086002700000094d0960009c000000000608201900000004087001bf000009480960009c00000000070820190000002008600270000009480960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b000000000900001900000001090040390000094d0a80009c000024f40000213d0000000109900190000024f40000c13d000000400080043f0000000208700039000000000886043600000021097000390000000509900272000020510000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b000020490000413d000000000900004b000020530000613d0000000009060433000000000909004b000024fa0000613d00000000090804330000095409900197000000f80a70021000000000099a019f000009560990004100000000009804350000000307700210000000f80770008900000000027201cf000000ff0770008c000000000200201900000021076000390000000000270435000020810000013d000000400600043d000009530760009c000024f40000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a0000206e0000413d0000000008060433000000000808004b000024fa0000613d000000f8082002100000094c09000041000000000202004b0000000002080019000000000209601900000000080704330000095408800197000000000228019f0000000000270435000000400700043d000009530270009c000024f40000213d000000040a0000290000004002a000390000000202200367000000000202043b0000004008700039000000400080043f000000200870003900000957090000410000000000980435000000150800003900000000008704350000002108700039000000600220021000000000002804350000012002a000390000000202200367000000000202043b000000800820008c000020e20000413d0000008008200270000009550920009c000000000802a019000009550920009c00000000090000190000001009002039000000080a9001bf0000094d0b80009c00000000090a2019000000400a8002700000094d0b80009c00000000080a2019000000040a9001bf000009480b80009c00000000090a2019000000200a800270000009480b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b0040390000094d0ca0009c000024f40000213d000000010bb00190000024f40000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb00272000020cf0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b000020c70000413d000000000b00004b000020d10000613d000000000b080433000000000b0b004b000024fa0000613d000000000b0a0433000009540bb00197000000f80c900210000000000bbc019f000009560bb000410000000000ba04350000000309900210000000f80990008900000000029201cf000000ff0990008c000000000200201900000021098000390000000000290435000020ff0000013d000000400800043d000009530980009c000024f40000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000020ec0000413d000000000a080433000000000a0a004b000024fa0000613d000000f80a2002100000094c0b000041000000000202004b00000000020a001900000000020b6019000000000a090433000009540aa0019700000000022a019f0000000000290435000000400200043d0000002009200039000000000a010433000000000b0a004b0000210c0000613d000000000b000019000000000c9b0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000cab004b000021050000413d00000000019a001900000000000104350000000009030433000000000a09004b000021190000613d000000000a000019000000000b1a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b9a004b000021120000413d000000000119001900000000000104350000000003040433000000000903004b000021260000613d0000000009000019000000000a1900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b0000211f0000413d000000000113001900000000000104350000000003050433000000000403004b000021330000613d000000000400001900000000091400190000002004400039000000000a540019000000000a0a04330000000000a90435000000000934004b0000212c0000413d000000000113001900000000000104350000000003060433000000000403004b000021400000613d000000000400001900000000051400190000002004400039000000000964001900000000090904330000000000950435000000000534004b000021390000413d000000000113001900000000000104350000000003070433000000000403004b0000214d0000613d000000000400001900000000051400190000002004400039000000000674001900000000060604330000000000650435000000000534004b000021460000413d000000000113001900000000000104350000000003080433000000000403004b0000215a0000613d000000000400001900000000051400190000002004400039000000000684001900000000060604330000000000650435000000000534004b000021530000413d000000000113001900000000000104350000000001210049000000200310008a00000000003204350000001f01100039000000200300008a000200000003001d000000000131016f0000000005210019000000000115004b000000000100001900000001010040390000094d0350009c000024f40000213d0000000101100190000024f40000c13d000000400050043f0000001f0100008a00000004030000290000000004310049000001c0013000390000000207000367000100000001001d000000000117034f000000000601043b000000000800003100000000014800190000094c09000041000000000a16004b000000000a000019000000000a0980190000094c011001970000094c0b600197000000000c1b004b000000000900801900000000011b013f0000094c0110009c00000000010a00190000000001096019000000000101004b000024f20000c13d00000004010000290000000001160019000000000617034f000000000606043b0000094d0960009c000024f20000213d000000000968004900000020081000390000094c01000041000000000a98004b000000000a000019000000000a0120190000094c099001970000094c0b800197000000000c9b004b000000000100801900000000099b013f0000094c0990009c00000000010ac019000000000101004b000024f20000c13d000000010160008c000021b70000c13d000000000187034f000000000101043b000000010300008a0000094c06000041000000000331004b000000000300001900000000030620190000094c011001970000094c0710009c00000000060080190000094c011001670000094c0110009c000000000103001900000000010660190000006006000039000000000101004b000022030000c13d000009530150009c000024f40000213d0000004001500039000000400010043f000000200150003900000956030000410000000000310435000000010100003900000000001504350000000006050019000022030000013d000000380160008c000021e90000413d0000002001600270000009480360009c00000000030600190000000003012019000009480160009c0000000001000019000000040100203900000002071001bf0000ffff0830008c000000000107201900000010073002700000000003072019000000ff0330008c00000000070000190000000107002039000009530350009c000024f40000213d000000000771019f0000004001500039000000400010043f000000020170003900000000081504360000000001000031000000020910036700000000010000190000000503100210000000000a380019000000000339034f000000000303043b00000000003a0435000000010110003a000021d20000413d0000000001050433000000000101004b000024fa0000613d00000000010804330000095401100197000000f803700210000000000113019f00000958011001c700000000001804350000000301700210000000f80110008900000000011601cf000000210350003900000000001304350000000006050019000022030000013d000009530150009c000024f40000213d0000004001500039000000400010043f0000000101000039000000000715043600000000010000310000000208100367000000000100001900000005031002100000000009370019000000000338034f000000000303043b0000000000390435000000010110003a000021f20000413d0000000001050433000000000101004b000024fa0000613d000000f80160021000000000030704330000095403300197000000000113019f0000094c0110016700000000001704350000000006050019000000400500043d000009530150009c000024f40000213d0000004001500039000000400010043f0000000101000039000300000001001d0000000007150436000000000100003100000002081003670000000001000019000000050a100210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010110003a0000220e0000413d0000000001050433000000000101004b000024fa0000613d0000000001070433000009540110019700000959011001c70000000000170435000000000800003100000000014800190000000403000029000001e00a3000390000000207000367000000000ba7034f000000000b0b043b0000094c0c000041000000000d1b004b000000000d000019000000000d0c80190000094c011001970000094c0eb00197000000000f1e004b000000000c00801900000000011e013f0000094c0110009c00000000010d001900000000010c6019000000000101004b000024f20000c13d000000040100002900000000011b0019000000000b17034f000000000b0b043b0000094d0cb0009c000024f20000213d000000000cb8004900000020081000390000094c01000041000000000dc8004b000000000d000019000000000d0120190000094c0cc001970000094c0e800197000000000fce004b0000000001008019000000000cce013f0000094c0cc0009c00000000010dc019000000000101004b000024f20000c13d0000002001b0008c000024f20000413d000000000187034f000000000801043b000000800180008c000022980000413d0000008001800270000009550780009c000000000108a019000009550780009c00000000070000190000001007002039000000080b7001bf0000094d0c10009c00000000070b2019000000400b1002700000094d0c10009c00000000010b2019000000040b7001bf000009480c10009c00000000070b2019000000200b100270000009480c10009c00000000010b2019000000020b7001bf0000ffff0c10008c00000000070b2019000000100b10027000000000010b2019000000ff0110008c00000000010000190000000101002039000000000b1700190000004101b000390000000203000029000000000131016f000000400700043d0000000001170019000000000c71004b000000000c000019000000010c0040390000094d0d10009c000024f40000213d000000010cc00190000024f40000c13d000000400010043f0000000201b00039000000000c1704360000002101b00039000000050d100272000022840000613d0000000001000031000000020e100367000000000f0000190000000501f0021000000000031c001900000000011e034f000000000101043b0000000000130435000000010ff000390000000001df004b0000227c0000413d000000000100004b000022860000613d0000000001070433000000000101004b000024fa0000613d00000000010c04330000095401100197000000f803b00210000000000113019f000009560110004100000000001c04350000000301b00210000000f80110008900000000031801cf000000ff0110008c0000000001030019000000000100201900000021037000390000000000130435000022b40000013d000000400700043d000009530170009c000024f40000213d0000004001700039000000400010043f0000000301000029000000000b1704360000000001000031000000020c10036700000000010000190000000503100210000000000d3b001900000000033c034f000000000303043b00000000003d0435000000010110003a000022a20000413d0000000001070433000000000101004b000024fa0000613d000000f8018002100000094c03000041000000000808004b000000000103601900000000030b04330000095403300197000000000113019f00000000001b0435000000000c00003100000000014c001900000002080003670000000003a8034f000000000b03043b0000094c03000041000000000d1b004b000000000d000019000000000d0380190000094c011001970000094c0eb00197000000000f1e004b000000000300801900000000011e013f0000094c0110009c00000000010d00190000000001036019000000000101004b000024f20000c13d0000000401000029000000000b1b00190000000001b8034f000000000d01043b0000094d01d0009c000024f20000213d0000000001dc00490000002003b000390000094c0c000041000000000e13004b000000000e000019000000000e0c20190000094c011001970000094c03300197000000000f13004b000000000c008019000000000113013f0000094c0110009c00000000010e001900000000010c6019000000000101004b000024f20000c13d0000004001d0008c000024f20000413d0000004001b00039000000000118034f000000000b01043b0000008001b0008c000023300000413d0000008001b002700000095503b0009c00000000010ba0190000095503b0009c0000000003000019000000100300203900000008083001bf0000094d0c10009c000000000308201900000040081002700000094d0c10009c000000000108201900000004083001bf000009480c10009c00000000030820190000002008100270000009480c10009c000000000108201900000002083001bf0000ffff0c10008c000000000308201900000010081002700000000001082019000000ff0110008c00000000010000190000000101002039000000000c1300190000004101c000390000000203000029000000000131016f000000400800043d0000000001180019000000000381004b000000000d000019000000010d0040390000094d0310009c000024f40000213d0000000103d00190000024f40000c13d000000400010043f0000000201c00039000000000d1804360000002101c00039000000050e1002720000231c0000613d0000000001000031000000020f1003670000000001000019000000050310021000000000093d001900000000033f034f000000000303043b000000000039043500000001011000390000000003e1004b000023140000413d000000000100004b0000231e0000613d0000000001080433000000000101004b000024fa0000613d00000000010d04330000095401100197000000f803c00210000000000113019f000009560110004100000000001d04350000000301c00210000000f80110008900000000031b01cf000000ff0110008c00000000010300190000000001002019000000210380003900000000001304350000234c0000013d000000400800043d000009530180009c000024f40000213d0000004001800039000000400010043f0000000301000029000000000c1804360000000001000031000000020d1003670000000001000019000000050310021000000000093c001900000000033d034f000000000303043b0000000000390435000000010110003a0000233a0000413d0000000001080433000000000101004b000024fa0000613d000000f801b002100000094c0300004100000000090b004b000000000103601900000000030c04330000095403300197000000000113019f00000000001c0435000000000c00003100000000014c0019000000020b0003670000000003ab034f000000000a03043b0000094c0300004100000000091a004b000000000900001900000000090380190000094c011001970000094c0da00197000000000e1d004b000000000300801900000000011d013f0000094c0110009c00000000010900190000000001036019000000000101004b000024f20000c13d0000000401000029000000000a1a00190000000001ab034f000000000d01043b0000094d01d0009c000024f20000213d0000000001dc00490000002003a000390000094c09000041000000000c13004b000000000c000019000000000c0920190000094c011001970000094c03300197000000000e13004b0000000009008019000000000113013f0000094c0110009c00000000010c00190000000001096019000000000101004b000024f20000c13d0000004101d0008c000024fa0000413d0000006001a0003900000000011b034f000000000b000415000000060bb0008a000000200bb000c90000094c0c000041000000000101043b000000f8011002700000001b0310008c000023870000613d000000000b000415000000050bb0008a000000200bb000c90000095b0c0000410000001c0110008c000025000000c13d000000400a00043d0000095301a0009c000024f40000213d0000004001a00039000000400010043f0000000301000029000000000d1a04360000000001000031000000020e1003670000000001000019000000050310021000000000093d001900000000033e034f000000000303043b0000000000390435000000010110003a000023910000413d00000000010a0433000000000101004b000024fa0000613d00000000010d043300000954011001970000000001c1019f00000000001d04350000002001b0011a00000000010a001f000000000b00003100000000014b0019000000020e000367000000010300002900000000033e034f000000000f03043b0000094c0300004100000000091f004b000000000900001900000000090380190000094c011001970000094c0cf00197000000000d1c004b000000000300801900000000011c013f0000094c0110009c00000000010900190000000001036019000000000101004b000024f20000c13d000000000c020433000000000d060433000000040100002900000000011f001900000000031e034f000000000e03043b0000094d03e0009c000024f20000213d0000000003eb004900000020011000390000094c09000041000000000b31004b000000000b000019000000000b0920190000094c033001970000094c01100197000000000f31004b0000000009008019000000000131013f0000094c0110009c00000000010b00190000000001096019000000000101004b000024f20000c13d0000000001cd00190000000001e1001900000000030504330000000001310019000000000307043300000000013100190000000003080433000000000131001900000000030a043300000000013100190000094d0c1001970000003801c0008c0000240a0000413d0000002001c002700000094803c0009c00000000030c001900000000030120190000094801c0009c0000000001000019000000040100203900000002091001bf0000ffff0b30008c000000000109201900000010093002700000000003092019000000ff0330008c00000000090000190000000109002039000000400b00043d0000095303b0009c000024f40000213d000000000991019f0000004001b00039000000400010043f0000000201900039000000000d1b04360000000001000031000000020e10036700000000010000190000000503100210000000000f3d001900000000033e034f000000000303043b00000000003f0435000000010110003a000023f40000413d00000000010b0433000000000101004b000024fa0000613d00000000010d04330000095401100197000000f803900210000000000113019f0000095a011001c700000000001d04350000000301900210000000f80110008900000000011c01cf0000002103b000390000000000130435000024240000013d000000400b00043d0000095301b0009c000024f40000213d0000004001b00039000000400010043f000000030100002900000000091b04360000000001000031000000020d10036700000000010000190000000503100210000000000e39001900000000033d034f000000000303043b00000000003e0435000000010110003a000024140000413d00000000010b0433000000000101004b000024fa0000613d000000f801c0021000000000030904330000095403300197000000000131019f00000959011000410000000000190435000000000c00003100000000014c001900000002040003670000000103000029000000000334034f000000000303043b0000094c09000041000000000d13004b000000000d000019000000000d0980190000094c011001970000094c0e300197000000000f1e004b000000000900801900000000011e013f0000094c0110009c00000000010d00190000000001096019000000000101004b000024f20000c13d00000004010000290000000001130019000000000314034f000000000903043b0000094d0390009c000024f20000213d00000000039c0049000000200c1000390000094c0100004100000000043c004b000000000400001900000000040120190000094c033001970000094c0dc00197000000000e3d004b000000000100801900000000033d013f0000094c0330009c000000000104c019000000000101004b000024f20000c13d000000400300043d00000020043000390000095c01000041000400000004001d0000000000140435000000210d300039000000000e0b043300000000010e004b0000245e0000613d0000000001000019000000000fd1001900000020011000390000000004b10019000000000404043300000000004f04350000000004e1004b000024570000413d000000000bde001900000000000b0435000000000d02043300000000010d004b0000246b0000613d00000000010000190000000004b100190000002001100039000000000e210019000000000e0e04330000000000e404350000000004d1004b000024640000413d0000000002bd00190000000000020435000000000b06043300000000010b004b000024780000613d000000000100001900000000042100190000002001100039000000000d610019000000000d0d04330000000000d404350000000004b1004b000024710000413d00000000022b00190000001f0690018f0000000000020435000000020bc00367000000050c900272000024870000613d00000000010000190000000504100210000000000d42001900000000044b034f000000000404043b00000000004d043500000001011000390000000004c1004b0000247f0000413d000000000106004b000024960000613d0000000501c0021000000000041b034f00000000011200190000000306600210000000000b010433000000000b6b01cf000000000b6b022f000000000404043b0000010006600089000000000464022f00000000046401cf0000000004b4019f0000000000410435000000000292001900000000000204350000000006050433000000000106004b000024a30000613d000000000100001900000000042100190000002001100039000000000951001900000000090904330000000000940435000000000461004b0000249c0000413d0000000002260019000000000002043500000000050a0433000000000105004b000024b00000613d0000000001000019000000000421001900000020011000390000000006a1001900000000060604330000000000640435000000000451004b000024a90000413d000000000225001900000000000204350000000005070433000000000105004b000024bd0000613d000000000100001900000000042100190000002001100039000000000671001900000000060604330000000000640435000000000451004b000024b60000413d000000000225001900000000000204350000000005080433000000000105004b000024ca0000613d000000000100001900000000042100190000002001100039000000000681001900000000060604330000000000640435000000000451004b000024c30000413d000000000125001900000000000104350000000001310049000000200210008a00000000002304350000001f011000390000000202000029000000000221016f0000000001320019000000000221004b000000000200001900000001020040390000094d0410009c000024f40000213d0000000102200190000024f40000c13d000000400010043f00000948010000410000000404000029000009480240009c0000000002010019000000000204401900000040022002100000000003030433000009480430009c00000000030180190000006003300210000000000223019f0000000003000414000009480430009c0000000001034019000000c001100210000000000121019f0000095c011001c70000801002000039251c25120000040f0000000102200190000024f20000613d000000000101043b000000000001042d00000000010000190000251e00010430000009700100004100000000001004350000004101000039000000040010043f00000971010000410000251e00010430000009700100004100000000001004350000003201000039000000040010043f00000971010000410000251e00010430000000400100043d00000044021000390000096b03000041000000000032043500000024021000390000000f0300003900000000003204350000094f0200004100000000002104350000000402100039000000200300003900000000003204350000094802000041000009480310009c0000000001028019000000400110021000000950011001c70000251e0001043000002515002104230000000102000039000000000001042d0000000002000019000000000001042d0000251a002104230000000102000039000000000001042d0000000002000019000000000001042d0000251c000004320000251d0001042e0000251e00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000ebe4a3d7000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff456e636f64696e6720756e737570706f7274656420747800000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f1901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f8080000000000000000000000000000000000000000000000000000000000000496e76616c696420762076616c756500000000000000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100000000000000000000000000000000000000000000000000ffffffffffffff9f00000000000000000000000000000000000000400000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000556e737570706f72746564207478207479706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052b2bf42e5ab5127f48669ab36579badd217fbd10998091dbba6028927708cf2", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/BytecodeCompressor.json b/src/deps/contracts/BytecodeCompressor.json deleted file mode 100644 index 76456195..00000000 --- a/src/deps/contracts/BytecodeCompressor.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "_format": "hh-zksolc-artifact-1", - "contractName": "BytecodeCompressor", - "sourceName": "cache-zk/solpp-generated-contracts/BytecodeCompressor.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "bytes", - "name": "_bytecode", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_rawCompressedData", - "type": "bytes" - } - ], - "name": "publishCompressedBytecode", - "outputs": [ - { - "internalType": "bytes32", - "name": "bytecodeHash", - "type": "bytes32" - } - ], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x000400000000000200000000030100190000006003300270000000b90430019700030000004103550002000000010355000000b90030019d000100000000001f0000008001000039000000400010043f0000000101200190000000650000c13d0000000005000031000000040150008c0000006d0000413d0000000203000367000000000103043b000000bb01100197000000bc0110009c0000006d0000c13d000000040150008a000000bd02000041000000400410008c00000000040000190000000004024019000000bd01100197000000000601004b000000000200a019000000bd0110009c00000000010400190000000001026019000000000101004b0000006d0000c13d0000000401300370000000000101043b000000be0210009c0000006d0000213d0000002302100039000000bd04000041000000000652004b00000000060000190000000006048019000000bd07500197000000bd02200197000000000872004b0000000004008019000000000272013f000000bd0220009c00000000020600190000000002046019000000000202004b0000006d0000c13d0000000402100039000000000223034f000000000202043b000000be0420009c0000006d0000213d00000024011000390000000004120019000000000454004b0000006d0000213d0000002404300370000000000604043b000000be0460009c0000006d0000213d0000002304600039000000bd07000041000000000854004b00000000080000190000000008078019000000bd09500197000000bd04400197000000000a94004b0000000007008019000000000494013f000000bd0440009c00000000040800190000000004076019000000000404004b0000006d0000c13d0000000404600039000000000343034f000000000403043b000000be0340009c0000006d0000213d00000024036000390000000006340019000000000556004b0000006d0000213d0000000005000411000080010550008c0000006f0000c13d02dd00790000040f000000400200043d0000000000120435000000b901000041000000b90320009c00000000010240190000004001100210000000c2011001c7000002de0001042e0000000001000416000000000101004b0000006d0000c13d000000200100003900000100001004430000012000000443000000ba01000041000002de0001042e0000000001000019000002df00010430000000bf01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000000c001000041000000c40010043f000000c101000041000002df0001043000030000000000020000001e0530008a000000020c00036700000000055c034f000000000505043b0000000305500210000000c30b5001970000000205b001bf000300000004001d000000000445004b000001e70000213d0000000304000029000000020540008a0000000004b500490000000206400210000000000626004b000001f50000c13d0000000005b5004b000000a50000613d0000000007b30019000000160530008a000000180610008a0000001c0770008a0000000008000019000000000987001900000000099c034f000000000909043b0000000309900210000000c309900197000000000ab9004b000001bd0000813d0000000009950019000000020a800210000000000aa60019000000000aac034f00000000099c034f000000000909043b000000000a0a043b0000000009a9013f000000be09900198000001d20000c13d0000000208800039000000000948004b000000910000413d0000001f042001900000020d0000c13d000000cf0420009c0000021f0000813d0000002004200190000002310000613d00000000070004140000000006120019000000000426004b00000000050000190000000105004039000000b9041001970000000101500190000001ef0000c13d0000000001000031000000000561004b000001ef0000413d000100000002001d000200000003001d0000000204400367000000b90570009c000002430000213d0000000001610049000000b90110019700000000011403df000000c002700210000000d002200197000000d1022001c700000000012103af000000020200003902dd02d80000040f00000000030100190000006003300270000100b90030019d000000b90330019700030000000103550000000102200190000002550000613d0000003f01300039000000d202100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000be0520009c0000000209000029000001e90000213d0000000104400190000001e90000c13d000000400020043f00000000023104360000001f043000390000000504400272000000010a000029000000e80000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000e00000413d000000000400004b000000ea0000613d0000000104000031000000000443004b000001e70000213d00000003050003670000001f0430018f0000000503300272000000fa0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000000f20000413d000000000604004b000001090000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000002700000c13d0000000001020433000000400800043d000000d4020000410000000000280435000000040280003900000020030000390000000000320435000000240280003900000003050000290000000000520435000000d501100197000000db02a00210000000d602200197000000000412019f0000001f0250018f00000044018000390000000203900367000000d7044001c7000200000004001d00000005045002720000012a0000613d000000000500001900000005065002100000000007610019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000001220000413d000000000502004b000001390000613d0000000504400210000000000343034f00000000044100190000000302200210000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f00000000002404350000000302000029000000000121001900000000000104350000001f01200039000000200200008a000000000121016f000000b902000041000000b90380009c0000000003020019000000000308401900000040033002100000004401100039000000b90410009c00000000010280190000006001100210000000000131019f0000000003000414000000b90430009c0000000002034019000000c002200210000000000112019f0000800802000039000100000008001d02dd02ce0000040f000000010a00002900000000030100190000006003300270000000b903300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001640000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000015c0000413d000000000705004b000001730000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000002820000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000be0410009c000001e90000213d0000000102200190000001e90000c13d000000400010043f000000200130008c000001e70000413d00000000010a0433000100000001001d000000d801000041000000000010043900008004010000390000000400100443000000b9010000410000000002000414000000b90320009c0000000001024019000000c001100210000000d9011001c7000080020200003902dd02d30000040f0000000102200190000001e70000613d000000000101043b000000000101004b000001e70000613d000000400400043d000000440140003900000003020000290000000000210435000000240140003900000001020000290000000000210435000000da010000410000000000140435000000040140003900000002020000290000000000210435000000b9010000410000000002000414000000b90320009c0000000002018019000000b90340009c000300000004001d00000000010440190000004001100210000000c002200210000000000112019f000000ce011001c7000080040200003902dd02ce0000040f00000000030100190000006003300270000100b90030019d000000b90430019700030000000103550000000102200190000002a80000613d0000000302000029000000be0120009c000001e90000213d000000400020043f0000000201000029000000000001042d000000400100043d0000006402100039000000c80300004100000000003204350000004402100039000000c9030000410000000000320435000000240210003900000024030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ca011001c7000002df00010430000000400100043d0000006402100039000000cb0300004100000000003204350000004402100039000000cc030000410000000000320435000000240210003900000032030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ca011001c7000002df000104300000000001000019000002df00010430000000db0100004100000000001004350000004101000039000000040010043f000000dc01000041000002df00010430000000db0100004100000000001004350000001101000039000000040010043f000000dc01000041000002df00010430000000400100043d0000008402100039000000c40300004100000000003204350000006402100039000000c50300004100000000003204350000004402100039000000c6030000410000000000320435000000240210003900000048030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000c7011001c7000002df00010430000000400100043d0000004402100039000000cd030000410000000000320435000000240210003900000002030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400100043d0000004402100039000000df030000410000000000320435000000240210003900000002030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400100043d0000004402100039000000de030000410000000000320435000000240210003900000002030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400100043d0000004402100039000000dd030000410000000000320435000000240210003900000008030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df000104300000001f0430018f0000000502300272000002600000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000002590000413d000000000504004b0000026e0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000002df00010430000000400100043d0000004402100039000000d3030000410000000000320435000000240210003900000019030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400200043d0000001f0430018f00000005033002720000028f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000002870000413d000000000504004b0000029e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000b9010000410000000103000031000000b90430009c0000000003018019000000b90420009c000000000102401900000040011002100000006002300210000000000112019f000002df00010430000000400200043d0000001f0340018f0000000504400272000002b50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000002ad0000413d000000000503004b000002c40000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000b9010000410000000103000031000000b90430009c0000000003018019000000b90420009c000000000102401900000040011002100000006002300210000000000112019f000002df00010430000002d1002104210000000102000039000000000001042d0000000002000019000000000001042d000002d6002104230000000102000039000000000001042d0000000002000019000000000001042d000002db002104230000000102000039000000000001042d0000000002000019000000000001042d000002dd00000432000002de0001042e000002df00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000f5e69a47000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720000000000000000000000000000000000000000640000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000007fff862797465636f646500000000000000000000000000000000000000000000000074696d65732073686f72746572207468616e20746865206f726967696e616c20456e636f6465642064617461206c656e6774682073686f756c6420626520342000000000000000000000000000000000000000a4000000000000000000000000756e647300000000000000000000000000000000000000000000000000000000456e636f646564206368756e6b20696e646578206973206f7574206f6620626f0000000000000000000000000000000000000084000000000000000000000000206f726967696e616c2062797465636f64650000000000000000000000000000456e636f646564206368756e6b20646f6573206e6f74206d6174636820746865706f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe07368612072657475726e656420696e76616c696420646174610000000000000062f84b240000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000024a55db9000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000070720000000000000000000000000000000000000000000000000000000000007070000000000000000000000000000000000000000000000000000000000000d6285e0df1a0c56dcc7a3c042e5ec991e7260864dc9390fa7e008bc6cb8e2d27", - "deployedBytecode": "0x000400000000000200000000030100190000006003300270000000b90430019700030000004103550002000000010355000000b90030019d000100000000001f0000008001000039000000400010043f0000000101200190000000650000c13d0000000005000031000000040150008c0000006d0000413d0000000203000367000000000103043b000000bb01100197000000bc0110009c0000006d0000c13d000000040150008a000000bd02000041000000400410008c00000000040000190000000004024019000000bd01100197000000000601004b000000000200a019000000bd0110009c00000000010400190000000001026019000000000101004b0000006d0000c13d0000000401300370000000000101043b000000be0210009c0000006d0000213d0000002302100039000000bd04000041000000000652004b00000000060000190000000006048019000000bd07500197000000bd02200197000000000872004b0000000004008019000000000272013f000000bd0220009c00000000020600190000000002046019000000000202004b0000006d0000c13d0000000402100039000000000223034f000000000202043b000000be0420009c0000006d0000213d00000024011000390000000004120019000000000454004b0000006d0000213d0000002404300370000000000604043b000000be0460009c0000006d0000213d0000002304600039000000bd07000041000000000854004b00000000080000190000000008078019000000bd09500197000000bd04400197000000000a94004b0000000007008019000000000494013f000000bd0440009c00000000040800190000000004076019000000000404004b0000006d0000c13d0000000404600039000000000343034f000000000403043b000000be0340009c0000006d0000213d00000024036000390000000006340019000000000556004b0000006d0000213d0000000005000411000080010550008c0000006f0000c13d02dd00790000040f000000400200043d0000000000120435000000b901000041000000b90320009c00000000010240190000004001100210000000c2011001c7000002de0001042e0000000001000416000000000101004b0000006d0000c13d000000200100003900000100001004430000012000000443000000ba01000041000002de0001042e0000000001000019000002df00010430000000bf01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000000c001000041000000c40010043f000000c101000041000002df0001043000030000000000020000001e0530008a000000020c00036700000000055c034f000000000505043b0000000305500210000000c30b5001970000000205b001bf000300000004001d000000000445004b000001e70000213d0000000304000029000000020540008a0000000004b500490000000206400210000000000626004b000001f50000c13d0000000005b5004b000000a50000613d0000000007b30019000000160530008a000000180610008a0000001c0770008a0000000008000019000000000987001900000000099c034f000000000909043b0000000309900210000000c309900197000000000ab9004b000001bd0000813d0000000009950019000000020a800210000000000aa60019000000000aac034f00000000099c034f000000000909043b000000000a0a043b0000000009a9013f000000be09900198000001d20000c13d0000000208800039000000000948004b000000910000413d0000001f042001900000020d0000c13d000000cf0420009c0000021f0000813d0000002004200190000002310000613d00000000070004140000000006120019000000000426004b00000000050000190000000105004039000000b9041001970000000101500190000001ef0000c13d0000000001000031000000000561004b000001ef0000413d000100000002001d000200000003001d0000000204400367000000b90570009c000002430000213d0000000001610049000000b90110019700000000011403df000000c002700210000000d002200197000000d1022001c700000000012103af000000020200003902dd02d80000040f00000000030100190000006003300270000100b90030019d000000b90330019700030000000103550000000102200190000002550000613d0000003f01300039000000d202100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000be0520009c0000000209000029000001e90000213d0000000104400190000001e90000c13d000000400020043f00000000023104360000001f043000390000000504400272000000010a000029000000e80000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000e00000413d000000000400004b000000ea0000613d0000000104000031000000000443004b000001e70000213d00000003050003670000001f0430018f0000000503300272000000fa0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000000f20000413d000000000604004b000001090000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000002700000c13d0000000001020433000000400800043d000000d4020000410000000000280435000000040280003900000020030000390000000000320435000000240280003900000003050000290000000000520435000000d501100197000000db02a00210000000d602200197000000000412019f0000001f0250018f00000044018000390000000203900367000000d7044001c7000200000004001d00000005045002720000012a0000613d000000000500001900000005065002100000000007610019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000001220000413d000000000502004b000001390000613d0000000504400210000000000343034f00000000044100190000000302200210000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f00000000002404350000000302000029000000000121001900000000000104350000001f01200039000000200200008a000000000121016f000000b902000041000000b90380009c0000000003020019000000000308401900000040033002100000004401100039000000b90410009c00000000010280190000006001100210000000000131019f0000000003000414000000b90430009c0000000002034019000000c002200210000000000112019f0000800802000039000100000008001d02dd02ce0000040f000000010a00002900000000030100190000006003300270000000b903300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001640000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000015c0000413d000000000705004b000001730000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000002820000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000be0410009c000001e90000213d0000000102200190000001e90000c13d000000400010043f000000200130008c000001e70000413d00000000010a0433000100000001001d000000d801000041000000000010043900008004010000390000000400100443000000b9010000410000000002000414000000b90320009c0000000001024019000000c001100210000000d9011001c7000080020200003902dd02d30000040f0000000102200190000001e70000613d000000000101043b000000000101004b000001e70000613d000000400400043d000000440140003900000003020000290000000000210435000000240140003900000001020000290000000000210435000000da010000410000000000140435000000040140003900000002020000290000000000210435000000b9010000410000000002000414000000b90320009c0000000002018019000000b90340009c000300000004001d00000000010440190000004001100210000000c002200210000000000112019f000000ce011001c7000080040200003902dd02ce0000040f00000000030100190000006003300270000100b90030019d000000b90430019700030000000103550000000102200190000002a80000613d0000000302000029000000be0120009c000001e90000213d000000400020043f0000000201000029000000000001042d000000400100043d0000006402100039000000c80300004100000000003204350000004402100039000000c9030000410000000000320435000000240210003900000024030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ca011001c7000002df00010430000000400100043d0000006402100039000000cb0300004100000000003204350000004402100039000000cc030000410000000000320435000000240210003900000032030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ca011001c7000002df000104300000000001000019000002df00010430000000db0100004100000000001004350000004101000039000000040010043f000000dc01000041000002df00010430000000db0100004100000000001004350000001101000039000000040010043f000000dc01000041000002df00010430000000400100043d0000008402100039000000c40300004100000000003204350000006402100039000000c50300004100000000003204350000004402100039000000c6030000410000000000320435000000240210003900000048030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000c7011001c7000002df00010430000000400100043d0000004402100039000000cd030000410000000000320435000000240210003900000002030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400100043d0000004402100039000000df030000410000000000320435000000240210003900000002030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400100043d0000004402100039000000de030000410000000000320435000000240210003900000002030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400100043d0000004402100039000000dd030000410000000000320435000000240210003900000008030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df000104300000001f0430018f0000000502300272000002600000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000002590000413d000000000504004b0000026e0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000002df00010430000000400100043d0000004402100039000000d3030000410000000000320435000000240210003900000019030000390000000000320435000000bf020000410000000000210435000000040210003900000020030000390000000000320435000000b902000041000000b90310009c00000000010280190000004001100210000000ce011001c7000002df00010430000000400200043d0000001f0430018f00000005033002720000028f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000002870000413d000000000504004b0000029e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000b9010000410000000103000031000000b90430009c0000000003018019000000b90420009c000000000102401900000040011002100000006002300210000000000112019f000002df00010430000000400200043d0000001f0340018f0000000504400272000002b50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000002ad0000413d000000000503004b000002c40000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000b9010000410000000103000031000000b90430009c0000000003018019000000b90420009c000000000102401900000040011002100000006002300210000000000112019f000002df00010430000002d1002104210000000102000039000000000001042d0000000002000019000000000001042d000002d6002104230000000102000039000000000001042d0000000002000019000000000001042d000002db002104230000000102000039000000000001042d0000000002000019000000000001042d000002dd00000432000002de0001042e000002df00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000f5e69a47000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720000000000000000000000000000000000000000640000008000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000007fff862797465636f646500000000000000000000000000000000000000000000000074696d65732073686f72746572207468616e20746865206f726967696e616c20456e636f6465642064617461206c656e6774682073686f756c6420626520342000000000000000000000000000000000000000a4000000000000000000000000756e647300000000000000000000000000000000000000000000000000000000456e636f646564206368756e6b20696e646578206973206f7574206f6620626f0000000000000000000000000000000000000084000000000000000000000000206f726967696e616c2062797465636f64650000000000000000000000000000456e636f646564206368756e6b20646f6573206e6f74206d6174636820746865706f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe07368612072657475726e656420696e76616c696420646174610000000000000062f84b240000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000024a55db9000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000070720000000000000000000000000000000000000000000000000000000000007070000000000000000000000000000000000000000000000000000000000000d6285e0df1a0c56dcc7a3c042e5ec991e7260864dc9390fa7e008bc6cb8e2d27", - "linkReferences": {}, - "deployedLinkReferences": {}, - "factoryDeps": {} -} diff --git a/src/deps/contracts/ComplexUpgrader.json b/src/deps/contracts/ComplexUpgrader.json index f9da43d7..137c2845 100644 --- a/src/deps/contracts/ComplexUpgrader.json +++ b/src/deps/contracts/ComplexUpgrader.json @@ -22,8 +22,8 @@ "type": "function" } ], - "bytecode": "0x000400000000000200000000030100190000006003300270000000470430019700030000004103550002000000010355000000470030019d000100000000001f0000008001000039000000400010043f0000000101200190000000440000c13d0000000004000031000000040140008c0000004c0000413d0000000202000367000000000102043b00000049011001970000004a0110009c0000004c0000c13d000000040140008a0000004b03000041000000400510008c000000000500001900000000050340190000004b01100197000000000601004b000000000300a0190000004b0110009c00000000010500190000000001036019000000000101004b0000004c0000c13d0000000401200370000000000101043b0000004c0310009c0000004c0000213d0000002403200370000000000503043b0000004d0350009c0000004c0000213d00000023035000390000004b06000041000000000743004b000000000700001900000000070680190000004b084001970000004b03300197000000000983004b0000000006008019000000000383013f0000004b0330009c00000000030700190000000003066019000000000303004b0000004c0000c13d0000000403500039000000000232034f000000000302043b0000004d0230009c0000004c0000213d00000024025000390000000005230019000000000445004b0000004c0000213d0118004e0000040f0000000001000019000001190001042e0000000001000416000000000101004b0000004c0000c13d0000002001000039000001000010044300000120000004430000004801000041000001190001042e00000000010000190000011a000104300003000000000002000300000003001d000200000002001d0000000002000411000080070220008c000000dc0000c13d00000052020000410000000000200439000100000001001d000000040010044300000047010000410000000002000414000000470320009c0000000001024019000000c00110021000000053011001c700008002020000390118010e0000040f0000000102200190000000f10000613d000000400800043d000000000101043b000000000101004b0000000309000029000000f30000613d0000001f0190018f000000020200002900000002032003670000000504900272000000750000613d000000000500001900000005065002100000000007680019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b0000006d0000413d000000000501004b000000840000613d0000000504400210000000000343034f00000000044800190000000301100210000000000504043300000000051501cf000000000515022f000000000303043b0000010001100089000000000313022f00000000011301cf000000000151019f00000000001404350000000001980019000000000001043500000000010004140000000102000029000000040320008c0000008d0000c13d00000001030000310000000002000019000000a10000013d0000004703000041000000470490009c000000000403001900000000040940190000006004400210000000470580009c000000000503001900000000050840190000004005500210000000000545019f000000470410009c0000000001038019000000c001100210000000000151019f011801130000040f000000010220015f00030000000103550000006001100270000100470010019d00000047031001970000006001000039000000000403004b000000d30000613d000000540130009c000000d60000813d0000001f01300039000000200400008a000000000141016f0000003f01100039000000000441016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000004d0640009c000000d60000213d0000000105500190000000d60000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f0000000506600272000000c40000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000000bc0000413d000000000705004b000000d30000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000102200190000001040000c13d000000000001042d000000550100004100000000001004350000004101000039000000040010043f00000056010000410000011a00010430000000400100043d00000064021000390000004e03000041000000000032043500000044021000390000004f030000410000000000320435000000240210003900000024030000390000000000320435000000500200004100000000002104350000000402100039000000200300003900000000003204350000004702000041000000470310009c0000000001028019000000400110021000000051011001c70000011a0001043000000000010000190000011a00010430000000440180003900000057030000410000000000310435000000240180003900000013030000390000000000310435000000500100004100000000001804350000000401800039000000200300003900000000003104350000004701000041000000470380009c0000000001084019000000400110021000000058011001c70000011a0001043000000000210104340000004703000041000000470410009c0000000001038019000000470420009c000000000203801900000040022002100000006001100210000000000121019f0000011a0001043000000111002104230000000102000039000000000001042d0000000002000019000000000001042d00000116002104250000000102000039000000000001042d0000000002000019000000000001042d0000011800000432000001190001042e0000011a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000c987336c000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff4f5945520000000000000000000000000000000000000000000000000000000043616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c08c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000044656c65676174656520697320616e20454f410000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cab82655287cf62246b3914f1832735e4a02ffa332102247d6d9c8c3386c07f7", - "deployedBytecode": "0x000400000000000200000000030100190000006003300270000000470430019700030000004103550002000000010355000000470030019d000100000000001f0000008001000039000000400010043f0000000101200190000000440000c13d0000000004000031000000040140008c0000004c0000413d0000000202000367000000000102043b00000049011001970000004a0110009c0000004c0000c13d000000040140008a0000004b03000041000000400510008c000000000500001900000000050340190000004b01100197000000000601004b000000000300a0190000004b0110009c00000000010500190000000001036019000000000101004b0000004c0000c13d0000000401200370000000000101043b0000004c0310009c0000004c0000213d0000002403200370000000000503043b0000004d0350009c0000004c0000213d00000023035000390000004b06000041000000000743004b000000000700001900000000070680190000004b084001970000004b03300197000000000983004b0000000006008019000000000383013f0000004b0330009c00000000030700190000000003066019000000000303004b0000004c0000c13d0000000403500039000000000232034f000000000302043b0000004d0230009c0000004c0000213d00000024025000390000000005230019000000000445004b0000004c0000213d0118004e0000040f0000000001000019000001190001042e0000000001000416000000000101004b0000004c0000c13d0000002001000039000001000010044300000120000004430000004801000041000001190001042e00000000010000190000011a000104300003000000000002000300000003001d000200000002001d0000000002000411000080070220008c000000dc0000c13d00000052020000410000000000200439000100000001001d000000040010044300000047010000410000000002000414000000470320009c0000000001024019000000c00110021000000053011001c700008002020000390118010e0000040f0000000102200190000000f10000613d000000400800043d000000000101043b000000000101004b0000000309000029000000f30000613d0000001f0190018f000000020200002900000002032003670000000504900272000000750000613d000000000500001900000005065002100000000007680019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b0000006d0000413d000000000501004b000000840000613d0000000504400210000000000343034f00000000044800190000000301100210000000000504043300000000051501cf000000000515022f000000000303043b0000010001100089000000000313022f00000000011301cf000000000151019f00000000001404350000000001980019000000000001043500000000010004140000000102000029000000040320008c0000008d0000c13d00000001030000310000000002000019000000a10000013d0000004703000041000000470490009c000000000403001900000000040940190000006004400210000000470580009c000000000503001900000000050840190000004005500210000000000545019f000000470410009c0000000001038019000000c001100210000000000151019f011801130000040f000000010220015f00030000000103550000006001100270000100470010019d00000047031001970000006001000039000000000403004b000000d30000613d000000540130009c000000d60000813d0000001f01300039000000200400008a000000000141016f0000003f01100039000000000441016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000004d0640009c000000d60000213d0000000105500190000000d60000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f0000000506600272000000c40000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000000bc0000413d000000000705004b000000d30000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000102200190000001040000c13d000000000001042d000000550100004100000000001004350000004101000039000000040010043f00000056010000410000011a00010430000000400100043d00000064021000390000004e03000041000000000032043500000044021000390000004f030000410000000000320435000000240210003900000024030000390000000000320435000000500200004100000000002104350000000402100039000000200300003900000000003204350000004702000041000000470310009c0000000001028019000000400110021000000051011001c70000011a0001043000000000010000190000011a00010430000000440180003900000057030000410000000000310435000000240180003900000013030000390000000000310435000000500100004100000000001804350000000401800039000000200300003900000000003104350000004701000041000000470380009c0000000001084019000000400110021000000058011001c70000011a0001043000000000210104340000004703000041000000470410009c0000000001038019000000470420009c000000000203801900000040022002100000006001100210000000000121019f0000011a0001043000000111002104230000000102000039000000000001042d0000000002000019000000000001042d00000116002104250000000102000039000000000001042d0000000002000019000000000001042d0000011800000432000001190001042e0000011a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000c987336c000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff4f5945520000000000000000000000000000000000000000000000000000000043616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c08c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000044656c65676174656520697320616e20454f410000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cab82655287cf62246b3914f1832735e4a02ffa332102247d6d9c8c3386c07f7", + "bytecode": "0x000400000000000200000000030100190000006003300270000000470430019700030000004103550002000000010355000000470030019d000100000000001f0000008001000039000000400010043f0000000101200190000000440000c13d0000000004000031000000040140008c0000004c0000413d0000000202000367000000000102043b00000049011001970000004a0110009c0000004c0000c13d000000040140008a0000004b03000041000000400510008c000000000500001900000000050340190000004b01100197000000000601004b000000000300a0190000004b0110009c00000000010500190000000001036019000000000101004b0000004c0000c13d0000000401200370000000000101043b0000004c0310009c0000004c0000213d0000002403200370000000000503043b0000004d0350009c0000004c0000213d00000023035000390000004b06000041000000000743004b000000000700001900000000070680190000004b084001970000004b03300197000000000983004b0000000006008019000000000383013f0000004b0330009c00000000030700190000000003066019000000000303004b0000004c0000c13d0000000403500039000000000232034f000000000302043b0000004d0230009c0000004c0000213d00000024025000390000000005230019000000000445004b0000004c0000213d0118004e0000040f0000000001000019000001190001042e0000000001000416000000000101004b0000004c0000c13d0000002001000039000001000010044300000120000004430000004801000041000001190001042e00000000010000190000011a000104300003000000000002000300000003001d000200000002001d0000000002000411000080070220008c000000dc0000c13d00000052020000410000000000200439000100000001001d000000040010044300000047010000410000000002000414000000470320009c0000000001024019000000c00110021000000053011001c700008002020000390118010e0000040f0000000102200190000000f10000613d000000400800043d000000000101043b000000000101004b0000000309000029000000f30000613d0000001f0190018f000000020200002900000002032003670000000504900272000000750000613d000000000500001900000005065002100000000007680019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b0000006d0000413d000000000501004b000000840000613d0000000504400210000000000343034f00000000044800190000000301100210000000000504043300000000051501cf000000000515022f000000000303043b0000010001100089000000000313022f00000000011301cf000000000151019f00000000001404350000000001980019000000000001043500000000010004140000000102000029000000040320008c0000008d0000c13d00000001030000310000000002000019000000a10000013d0000004703000041000000470490009c000000000403001900000000040940190000006004400210000000470580009c000000000503001900000000050840190000004005500210000000000545019f000000470410009c0000000001038019000000c001100210000000000151019f011801130000040f000000010220015f00030000000103550000006001100270000100470010019d00000047031001970000006001000039000000000403004b000000d30000613d000000540130009c000000d60000813d0000001f01300039000000200400008a000000000141016f0000003f01100039000000000441016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000004d0640009c000000d60000213d0000000105500190000000d60000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f0000000506600272000000c40000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000000bc0000413d000000000705004b000000d30000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000102200190000001040000c13d000000000001042d000000550100004100000000001004350000004101000039000000040010043f00000056010000410000011a00010430000000400100043d00000064021000390000004e03000041000000000032043500000044021000390000004f030000410000000000320435000000240210003900000024030000390000000000320435000000500200004100000000002104350000000402100039000000200300003900000000003204350000004702000041000000470310009c0000000001028019000000400110021000000051011001c70000011a0001043000000000010000190000011a00010430000000440180003900000057030000410000000000310435000000240180003900000013030000390000000000310435000000500100004100000000001804350000000401800039000000200300003900000000003104350000004701000041000000470380009c0000000001084019000000400110021000000058011001c70000011a0001043000000000210104340000004703000041000000470410009c0000000001038019000000470420009c000000000203801900000040022002100000006001100210000000000121019f0000011a0001043000000111002104230000000102000039000000000001042d0000000002000019000000000001042d00000116002104250000000102000039000000000001042d0000000002000019000000000001042d0000011800000432000001190001042e0000011a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000c987336c000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff4f5945520000000000000000000000000000000000000000000000000000000043616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c08c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000044656c65676174656520697320616e20454f410000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3ae095b702686e9c828067f7814feec49aed4be7494fed7813e54a61aa5fdd3", + "deployedBytecode": "0x000400000000000200000000030100190000006003300270000000470430019700030000004103550002000000010355000000470030019d000100000000001f0000008001000039000000400010043f0000000101200190000000440000c13d0000000004000031000000040140008c0000004c0000413d0000000202000367000000000102043b00000049011001970000004a0110009c0000004c0000c13d000000040140008a0000004b03000041000000400510008c000000000500001900000000050340190000004b01100197000000000601004b000000000300a0190000004b0110009c00000000010500190000000001036019000000000101004b0000004c0000c13d0000000401200370000000000101043b0000004c0310009c0000004c0000213d0000002403200370000000000503043b0000004d0350009c0000004c0000213d00000023035000390000004b06000041000000000743004b000000000700001900000000070680190000004b084001970000004b03300197000000000983004b0000000006008019000000000383013f0000004b0330009c00000000030700190000000003066019000000000303004b0000004c0000c13d0000000403500039000000000232034f000000000302043b0000004d0230009c0000004c0000213d00000024025000390000000005230019000000000445004b0000004c0000213d0118004e0000040f0000000001000019000001190001042e0000000001000416000000000101004b0000004c0000c13d0000002001000039000001000010044300000120000004430000004801000041000001190001042e00000000010000190000011a000104300003000000000002000300000003001d000200000002001d0000000002000411000080070220008c000000dc0000c13d00000052020000410000000000200439000100000001001d000000040010044300000047010000410000000002000414000000470320009c0000000001024019000000c00110021000000053011001c700008002020000390118010e0000040f0000000102200190000000f10000613d000000400800043d000000000101043b000000000101004b0000000309000029000000f30000613d0000001f0190018f000000020200002900000002032003670000000504900272000000750000613d000000000500001900000005065002100000000007680019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b0000006d0000413d000000000501004b000000840000613d0000000504400210000000000343034f00000000044800190000000301100210000000000504043300000000051501cf000000000515022f000000000303043b0000010001100089000000000313022f00000000011301cf000000000151019f00000000001404350000000001980019000000000001043500000000010004140000000102000029000000040320008c0000008d0000c13d00000001030000310000000002000019000000a10000013d0000004703000041000000470490009c000000000403001900000000040940190000006004400210000000470580009c000000000503001900000000050840190000004005500210000000000545019f000000470410009c0000000001038019000000c001100210000000000151019f011801130000040f000000010220015f00030000000103550000006001100270000100470010019d00000047031001970000006001000039000000000403004b000000d30000613d000000540130009c000000d60000813d0000001f01300039000000200400008a000000000141016f0000003f01100039000000000441016f000000400100043d0000000004410019000000000514004b000000000500001900000001050040390000004d0640009c000000d60000213d0000000105500190000000d60000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f0000000506600272000000c40000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000000bc0000413d000000000705004b000000d30000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000102200190000001040000c13d000000000001042d000000550100004100000000001004350000004101000039000000040010043f00000056010000410000011a00010430000000400100043d00000064021000390000004e03000041000000000032043500000044021000390000004f030000410000000000320435000000240210003900000024030000390000000000320435000000500200004100000000002104350000000402100039000000200300003900000000003204350000004702000041000000470310009c0000000001028019000000400110021000000051011001c70000011a0001043000000000010000190000011a00010430000000440180003900000057030000410000000000310435000000240180003900000013030000390000000000310435000000500100004100000000001804350000000401800039000000200300003900000000003104350000004701000041000000470380009c0000000001084019000000400110021000000058011001c70000011a0001043000000000210104340000004703000041000000470410009c0000000001038019000000470420009c000000000203801900000040022002100000006001100210000000000121019f0000011a0001043000000111002104230000000102000039000000000001042d0000000002000019000000000001042d00000116002104250000000102000039000000000001042d0000000002000019000000000001042d0000011800000432000001190001042e0000011a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000c987336c000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff4f5945520000000000000000000000000000000000000000000000000000000043616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c08c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000044656c65676174656520697320616e20454f410000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3ae095b702686e9c828067f7814feec49aed4be7494fed7813e54a61aa5fdd3", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/Compressor.json b/src/deps/contracts/Compressor.json new file mode 100644 index 00000000..aaea9846 --- /dev/null +++ b/src/deps/contracts/Compressor.json @@ -0,0 +1,70 @@ +{ + "_format": "hh-zksolc-artifact-1", + "contractName": "Compressor", + "sourceName": "cache-zk/solpp-generated-contracts/Compressor.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes", + "name": "_bytecode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_rawCompressedData", + "type": "bytes" + } + ], + "name": "publishCompressedBytecode", + "outputs": [ + { + "internalType": "bytes32", + "name": "bytecodeHash", + "type": "bytes32" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_numberOfStateDiffs", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_enumerationIndexSize", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_stateDiffs", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_compressedStateDiffs", + "type": "bytes" + } + ], + "name": "verifyCompressedStateDiffs", + "outputs": [ + { + "internalType": "bytes32", + "name": "stateDiffHash", + "type": "bytes32" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x0004000000000002000b000000000002000000000301001900000060033002700000017c04300197000300000041035500020000000103550000017c0030019d000100000000001f0000008001000039000000400010043f0000000101200190000002a80000c13d0000000005000031000000040150008c000001fe0000413d0000000203000367000000000103043b000000e0011002700000017e0210009c000002550000c13d000000040150008a0000018002000041000000800410008c000000000400001900000000040240190000018001100197000000000601004b000000000200a019000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d0000000401300370000000000701043b0000004401300370000000000201043b0000002401300370000000000101043b000600000001001d000100000002001d000001810120009c000001fe0000213d000000010100002900000023011000390000018002000041000000000451004b0000000004000019000000000402801900000180065001970000018001100197000000000861004b0000000002008019000000000161013f000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d00000001010000290000000401100039000000000113034f000000000801043b000001810180009c000001fe0000213d00000001010000290000002401100039000b00000001001d0000000001180019000000000151004b000001fe0000213d0000006401300370000000000101043b000500000001001d000001810110009c000001fe0000213d000000050100002900000023011000390000018002000041000000000451004b0000000004000019000000000402801900000180065001970000018001100197000a00000008001d000000000861004b0000000a080000290000000002008019000000000161013f000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d00000005010000290000000401100039000000000113034f000000000101043b000800000001001d000001810110009c000001fe0000213d000000050100002900000024021000390000000801000029000900000002001d0000000001210019000000000151004b000001fe0000213d0000000001000411000080080110008c000002b00000c13d0000000601000029000000090110008c000002ba0000813d000000020600003900000110147000c9000001110500008a000000000b00001900000000090000190000007d0000013d0000000001e1004b00000000090c00190000000a08000029000002330000c13d000000000107004b000000820000613d00000000217400d9000001100110008c0000022d0000c13d000000000149004b000000fc0000813d000000000159004b0000022d0000213d000001100c90003900000000018c004b000001fe0000213d0000000b01000029000000000e1900190000003c01e00039000000000113034f000000000101043b000001810110019800000000090c00190000007d0000c13d000000010900008a00000000019b004b0000022d0000613d000000090100002900000000011600190000003402e00039000000000223034f000000000113034f000000000101043b000000000202043b000000000112004b000002160000c13d000000210100008a000000000116004b0000022d0000213d00000020016000390000000802000029000000000221004b000002100000813d00000009020000290000000001210019000000000113034f000000000101043b000000fb02100270000000f801100270000000070d100190000000000a020019000000200a006039000000210160003900000000061a001a0000022d0000413d0000000802000029000000000226004b000001fe0000213d000000090200002900000000012100190000007c02e00039000000000223034f0000005c0ee00039000000000ee3034f000000000113034f000000000101043b000000000f0e043b000000000e02043b0000001f02a0008c0000000302a00210000000d30000213d000001000820008900000000088901cf000700000008001d000000000920004900000000080e0019000000000e0f0019000000000f06001900000000060b0019000001000b00008a0000000009b9004b000000000b06001900000000060f0019000000000f0e0019000000000e08001900000007080000290000000008004019000000000181016f00000000080a004b000000dc0000613d000001000820008c0000022d0000213d0000000098a200d9000000080880008c0000022d0000c13d0000010008200089000000000181022f000000000202004b000000dd0000c13d0000000001000019000000010bb0003900000000020d004b000000790000613d0000000302d0008c000000790000613d0000000102d0008c0000000a08000029000000ea0000c13d0000000001f100190000000001e1004b00000000090c00190000007d0000613d0000023f0000013d0000000202d0008c0000024b0000c13d00000000011f00490000000001e1004b00000000090c00190000007d0000613d0000018201000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f0000019101000041000000c40010043f0000019201000041000000e40010043f0000018901000041000005ee0001043000000005010000290000000601100039000000000113034f000000000101043b0000ffff0110018f00000000011b004b000001270000c13d0000000601000029000000030b1002100000010001b00089000000010200008a000700000001001d000300000002001d00000000011201cf0000000002b00049000001000900008a000200000009001d000000000292004b0000000001004019000400000001001d0000010101b0008c000001330000413d000000000107004b0000014a0000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b00000181022001980000000002070019000001170000613d0000015f0000013d0000018201000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000018701000041000000c40010043f0000018801000041000000e40010043f0000018901000041000005ee0001043000000000010b004b000001660000c13d000000000107004b000001e30000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b000001810220019800000000020700190000013a0000613d000001f80000013d00000000217400d9000001100110008c0000022d0000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b00000181022001980000000002070019000001500000613d0000000601000029000000000116001a0000022d0000413d0000000802000029000000000121004b000001fe0000213d000002200000013d00050000000b001d000000000d0000190000016d0000013d0000000001c1004b000000000d0900190000000a08000029000002330000c13d000000000107004b000001720000613d00000000217400d9000001100110008c0000022d0000c13d00000000014d004b000002000000813d00000000015d004b0000022d0000213d0000011009d00039000000000189004b000001fe0000213d0000000b01000029000000000c1d00190000003c01c00039000000000113034f000000000101043b000001810e100198000000000d0900190000016d0000613d0000000601000029000000000d16001a0000022d0000413d000000080100002900000000011d004b000001fe0000213d00000009010000290000000001160019000000000113034f000000000101043b00000006020000290000001f0220008c000001930000213d0000000402000029000000000121016f0000000602000029000000000202004b000002230000613d0000000602000029000000050600002900000000622600d9000000080220008c0000022d0000c13d0000000702000029000000000121022f00000000011e004b000002230000c13d000000080100002900000000011d004b000002100000813d000000090100002900000000011d0019000000000113034f000000000101043b000000fb02100270000000f801100270000000070f100190000000000e020019000000200e0060390000000101d0003900000000061e00190000000002d6004b0000022d0000a13d0000000802000029000000000226004b000001fe0000213d000000090200002900000000012100190000007c02c00039000000000223034f0000005c08c00039000000000883034f000000000113034f000000000101043b000000000b08043b000000000c02043b0000001f02e0008c0000000302e00210000001c60000213d0000010008200089000000030a00002900000000088a01cf000000000a200049000000020d000029000000000ada004b0000000008004019000000000181016f00000000080e004b000001cf0000613d000001000820008c0000022d0000213d00000000a8e200d9000000080880008c0000022d0000c13d0000010008200089000000000181022f000000000202004b000001d00000c13d000000000100001900000000020f004b000001690000613d0000000302f0008c000001690000613d0000000102f0008c0000000a08000029000001dc0000c13d0000000001b100190000000001c1004b000000000d0900190000016d0000613d0000023f0000013d0000000202f0008c0000024b0000c13d00000000011b00490000000001c1004b000000000d0900190000016d0000613d000000f00000013d00000000217400d9000001100110008c0000022d0000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b00000181022001980000000002070019000001e90000613d0000000601000029000000000116001a0000022d0000413d0000000802000029000000000121004b000002200000a13d0000000001000019000005ee000104300000000801000029000000000116004b0000000001000019000000010100603905ec05190000040f0000000b010000290000000a0200002905ec05310000040f000000400200043d00000000001204350000017c010000410000017c0320009c0000000001024019000000400110021000000185011001c7000005ed0001042e0000018c0100004100000000001004350000003201000039000000040010043f0000018d01000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000001801000039000000a40010043f0000018b01000041000000c40010043f0000018401000041000005ee000104300000000601000029000000000101004b0000022d0000c13d0000018201000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000018a01000041000000c40010043f0000018401000041000005ee000104300000018c0100004100000000001004350000001101000039000000040010043f0000018d01000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000018e01000041000000c40010043f0000018f01000041000000e40010043f0000018901000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000002e01000039000000a40010043f0000019301000041000000c40010043f0000019401000041000000e40010043f0000018901000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000019001000041000000c40010043f0000018401000041000005ee000104300000017f0110009c000001fe0000c13d000000040150008a0000018002000041000000400410008c000000000400001900000000040240190000018001100197000000000601004b000000000200a019000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d0000000401300370000000000101043b000001810210009c000001fe0000213d00000023021000390000018004000041000000000652004b0000000006000019000000000604801900000180075001970000018002200197000000000872004b0000000004008019000000000272013f000001800220009c00000000020600190000000002046019000000000202004b000001fe0000c13d0000000402100039000000000223034f000000000202043b000001810420009c000001fe0000213d00000024011000390000000004120019000000000454004b000001fe0000213d0000002404300370000000000604043b000001810460009c000001fe0000213d00000023046000390000018007000041000000000854004b0000000008000019000000000807801900000180095001970000018004400197000000000a94004b0000000007008019000000000494013f000001800440009c00000000040800190000000004076019000000000404004b000001fe0000c13d0000000404600039000000000343034f000000000403043b000001810340009c000001fe0000213d00000024036000390000000006340019000000000556004b000001fe0000213d0000000005000411000080010550008c000002c60000c13d05ec02d00000040f000000400200043d00000000001204350000017c010000410000017c0320009c0000000001024019000000400110021000000185011001c7000005ed0001042e0000000001000416000000000101004b000001fe0000c13d0000002001000039000001000010044300000120000004430000017d01000041000005ed0001042e0000018201000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f0000018601000041000000c40010043f0000018401000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000002301000039000000a40010043f0000019501000041000000c40010043f0000019601000041000000e40010043f0000018901000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000018301000041000000c40010043f0000018401000041000005ee0001043000030000000000020000001e0530008a000000020d00036700000000065d034f000000000606043b0000000306600210000001970c6001970000000206c001bf000000000746004b000004320000213d000000000b6400490000000207b00210000000000727004b000004400000c13d000000000746004b000002f80000613d0000000005650019000000160630008a000000180710008a0000000008000019000000000985001900000000099d034f000000000909043b00000003099002100000019709900197000000000ac9004b000004080000813d0000000009960019000000020a800210000000000aa70019000000000aad034f00000000099d034f000000000909043b000000000a0a043b0000000009a9013f00000181099001980000041d0000c13d00000002088000390000000009b8004b000002e40000413d0000001f05200190000004580000c13d000001a30520009c0000046a0000813d00000020052001900000047c0000613d00000000080004140000000007120019000000000527004b000000000500001900000001050040390000017c0610019700000001015001900000043a0000c13d0000000001000031000000000571004b0000043a0000413d000100000002001d000300000003001d000200000004001d0000000204600367000001a40580009c0000048e0000813d00000000017100490000017c0110019700000000011403df000000c002800210000001a502200197000001a6022001c700000000012103af000000020200003905ec05e70000040f000000000301001900000060033002700001017c0030019d0000017c0330019700030000000103550000000102200190000004a00000613d0000003f01300039000001a702100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000001810520009c0000000209000029000000030a000029000004340000213d0000000104400190000004340000c13d000000400020043f00000000023104360000001f043000390000000504400272000000010b0000290000033d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000003350000413d000000000400004b0000033f0000613d0000000104000031000000000443004b000004320000213d00000003050003670000001f0430018f00000005033002720000034f0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000003470000413d000000000604004b0000035e0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000004bb0000c13d0000000001020433000000400800043d000001a902000041000000000028043500000004028000390000002003000039000000000032043500000024028000390000000000920435000001aa01100197000000db02b00210000001ab02200197000000000412019f0000001f0290018f00000044018000390000000203a00367000001ac044001c7000300000004001d00000005049002720000037e0000613d000000000500001900000005065002100000000007610019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000003760000413d000000000502004b0000038d0000613d0000000504400210000000000343034f00000000044100190000000302200210000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000000191001900000000000104350000001f01900039000000200200008a000000000121016f0000017c020000410000017c0380009c00000000030200190000000003084019000000400330021000000044011000390000017c0410009c00000000010280190000006001100210000000000131019f00000000030004140000017c0430009c0000000002034019000000c002200210000000000112019f0000800802000039000200000008001d05ec05dd0000040f000000020a000029000000000301001900000060033002700000017c03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000003af0000413d000000000705004b000003c60000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000004cd0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001810410009c000004340000213d0000000102200190000004340000c13d000000400010043f000000200130008c000004320000413d000001ad010000410000000000100439000080040100003900000004001004430000017c0100004100000000020004140000017c0320009c0000000001024019000000c001100210000001ae011001c7000080020200003905ec05e20000040f0000000102200190000004320000613d000000000101043b000000000101004b000004320000613d000000400400043d000001af0100004100000000001404350000000401400039000000030200002900000000002104350000017c0100004100000000020004140000017c0320009c00000000020180190000017c0340009c000200000004001d00000000010440190000004001100210000000c002200210000000000112019f0000018d011001c7000080040200003905ec05dd0000040f000000000301001900000060033002700001017c0030019d0000017c0430019700030000000103550000000102200190000004f30000613d0000000202000029000001810120009c000004340000213d000000400020043f0000000301000029000000000001042d000000400100043d00000064021000390000019c03000041000000000032043500000044021000390000019d030000410000000000320435000000240210003900000024030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019e011001c7000005ee00010430000000400100043d00000064021000390000019f0300004100000000003204350000004402100039000001a0030000410000000000320435000000240210003900000032030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019e011001c7000005ee000104300000000001000019000005ee000104300000018c0100004100000000001004350000004101000039000000040010043f0000018d01000041000005ee000104300000018c0100004100000000001004350000001101000039000000040010043f0000018d01000041000005ee00010430000000400100043d00000084021000390000019803000041000000000032043500000064021000390000019903000041000000000032043500000044021000390000019a030000410000000000320435000000240210003900000048030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019b011001c7000005ee00010430000000400100043d0000004402100039000001a1030000410000000000320435000000240210003900000002030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400100043d0000004402100039000001b2030000410000000000320435000000240210003900000002030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400100043d0000004402100039000001b1030000410000000000320435000000240210003900000002030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400100043d0000004402100039000001b0030000410000000000320435000000240210003900000008030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee000104300000001f0430018f0000000502300272000004ab0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000004a40000413d000000000504004b000004b90000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000005ee00010430000000400100043d0000004402100039000001a8030000410000000000320435000000240210003900000019030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400200043d0000001f0430018f0000000503300272000004da0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004d20000413d000000000504004b000004e90000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000017c0100004100000001030000310000017c0430009c00000000030180190000017c0420009c000000000102401900000040011002100000006002300210000000000112019f000005ee00010430000000400200043d0000001f0340018f0000000504400272000005000000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000004f80000413d000000000503004b0000050f0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f00000000001404350000017c0100004100000001030000310000017c0430009c00000000030180190000017c0420009c000000000102401900000040011002100000006002300210000000000112019f000005ee00010430000000000101004b0000051c0000613d000000000001042d000000400100043d0000006402100039000001b30300004100000000003204350000004402100039000001b4030000410000000000320435000000240210003900000023030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019e011001c7000005ee0001043000000000030004140000000004120019000000000224004b000000000500001900000001050040390000017c021001970000000101500190000005900000c13d0000000001000031000000000541004b000005900000413d0000000202200367000001a40530009c000005960000813d00000000014100490000017c0110019700000000011203df000000c002300210000001a502200197000001a6022001c700000000012103af000080100200003905ec05e70000040f000000000301001900000060033002700001017c0030019d0000017c0330019700030000000103550000000102200190000005a80000613d0000003f01300039000001a702100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000001810520009c000005c30000213d0000000104400190000005c30000c13d000000400020043f00000000023104360000001f0430003900000005044002720000056a0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000005620000413d000000000400004b0000056c0000613d0000000104000031000000000443004b000005c90000213d00000003050003670000001f0430018f00000005033002720000057c0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000005740000413d000000000604004b0000058b0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000005cb0000c13d0000000001020433000000000001042d0000018c0100004100000000001004350000001101000039000000040010043f0000018d01000041000005ee00010430000000400100043d0000004402100039000001b0030000410000000000320435000000240210003900000008030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee000104300000001f0430018f0000000502300272000005b30000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000005ac0000413d000000000504004b000005c10000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000005ee000104300000018c0100004100000000001004350000004101000039000000040010043f0000018d01000041000005ee000104300000000001000019000005ee00010430000000400100043d0000004402100039000001b503000041000000000032043500000024021000390000001f030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000005e0002104210000000102000039000000000001042d0000000002000019000000000001042d000005e5002104230000000102000039000000000001042d0000000002000019000000000001042d000005ea002104230000000102000039000000000001042d0000000002000019000000000001042d000005ec00000432000005ed0001042e000005ee00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000006006d8b500000000000000000000000000000000000000000000000000000000f5e69a478000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720000000000000000000000000000000000000000640000008000000000000000000000000000000000000000000000000000000020000000000000000000000000496e617070726f7072696174652063616c6c6572000000000000000000000000496e636f7272656374206e756d626572206f6620696e697469616c2073746f726167652064696666730000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000072773a20656e756d206b6579206d69736d61746368000000000000000000000069773a20696e697469616c206b6579206d69736d6174636800000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007472616e73666f726d206f72206e6f20636f6d7072657373696f6e3a20636f6d7072657373656420616e642066696e616c206d69736d61746368000000000000756e737570706f72746564206f7065726174696f6e00000000000000000000007375623a20696e697469616c206d696e757320636f6e766572746564206e6f7420657175616c20746f2066696e616c00000000000000000000000000000000006164643a20696e697469616c20706c757320636f6e766572746564206e6f7420657175616c20746f2066696e616c000000000000000000000000000000000000656e756d65726174696f6e20696e6465782073697a6520697320746f6f206c617267650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fff862797465636f646500000000000000000000000000000000000000000000000074696d65732073686f72746572207468616e20746865206f726967696e616c20456e636f6465642064617461206c656e6774682073686f756c6420626520342000000000000000000000000000000000000000a4000000000000000000000000756e647300000000000000000000000000000000000000000000000000000000456e636f646564206368756e6b20696e646578206973206f7574206f6620626f0000000000000000000000000000000000000084000000000000000000000000206f726967696e616c2062797465636f64650000000000000000000000000000456e636f646564206368756e6b20646f6573206e6f74206d6174636820746865706f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe07368612072657475726e656420696e76616c696420646174610000000000000062f84b240000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000079c4f929000000000000000000000000000000000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000007072000000000000000000000000000000000000000000000000000000000000707000000000000000000000000000000000000000000000000000000000000066667300000000000000000000000000000000000000000000000000000000004578747261206461746120696e205f636f6d70726573736564537461746544696b656363616b3235362072657475726e656420696e76616c6964206461746100b4d4241d8a2da2cf3e1bf35dd302345ffbb506f1f41300f3c5e72d9a0e037dc2", + "deployedBytecode": "0x0004000000000002000b000000000002000000000301001900000060033002700000017c04300197000300000041035500020000000103550000017c0030019d000100000000001f0000008001000039000000400010043f0000000101200190000002a80000c13d0000000005000031000000040150008c000001fe0000413d0000000203000367000000000103043b000000e0011002700000017e0210009c000002550000c13d000000040150008a0000018002000041000000800410008c000000000400001900000000040240190000018001100197000000000601004b000000000200a019000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d0000000401300370000000000701043b0000004401300370000000000201043b0000002401300370000000000101043b000600000001001d000100000002001d000001810120009c000001fe0000213d000000010100002900000023011000390000018002000041000000000451004b0000000004000019000000000402801900000180065001970000018001100197000000000861004b0000000002008019000000000161013f000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d00000001010000290000000401100039000000000113034f000000000801043b000001810180009c000001fe0000213d00000001010000290000002401100039000b00000001001d0000000001180019000000000151004b000001fe0000213d0000006401300370000000000101043b000500000001001d000001810110009c000001fe0000213d000000050100002900000023011000390000018002000041000000000451004b0000000004000019000000000402801900000180065001970000018001100197000a00000008001d000000000861004b0000000a080000290000000002008019000000000161013f000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d00000005010000290000000401100039000000000113034f000000000101043b000800000001001d000001810110009c000001fe0000213d000000050100002900000024021000390000000801000029000900000002001d0000000001210019000000000151004b000001fe0000213d0000000001000411000080080110008c000002b00000c13d0000000601000029000000090110008c000002ba0000813d000000020600003900000110147000c9000001110500008a000000000b00001900000000090000190000007d0000013d0000000001e1004b00000000090c00190000000a08000029000002330000c13d000000000107004b000000820000613d00000000217400d9000001100110008c0000022d0000c13d000000000149004b000000fc0000813d000000000159004b0000022d0000213d000001100c90003900000000018c004b000001fe0000213d0000000b01000029000000000e1900190000003c01e00039000000000113034f000000000101043b000001810110019800000000090c00190000007d0000c13d000000010900008a00000000019b004b0000022d0000613d000000090100002900000000011600190000003402e00039000000000223034f000000000113034f000000000101043b000000000202043b000000000112004b000002160000c13d000000210100008a000000000116004b0000022d0000213d00000020016000390000000802000029000000000221004b000002100000813d00000009020000290000000001210019000000000113034f000000000101043b000000fb02100270000000f801100270000000070d100190000000000a020019000000200a006039000000210160003900000000061a001a0000022d0000413d0000000802000029000000000226004b000001fe0000213d000000090200002900000000012100190000007c02e00039000000000223034f0000005c0ee00039000000000ee3034f000000000113034f000000000101043b000000000f0e043b000000000e02043b0000001f02a0008c0000000302a00210000000d30000213d000001000820008900000000088901cf000700000008001d000000000920004900000000080e0019000000000e0f0019000000000f06001900000000060b0019000001000b00008a0000000009b9004b000000000b06001900000000060f0019000000000f0e0019000000000e08001900000007080000290000000008004019000000000181016f00000000080a004b000000dc0000613d000001000820008c0000022d0000213d0000000098a200d9000000080880008c0000022d0000c13d0000010008200089000000000181022f000000000202004b000000dd0000c13d0000000001000019000000010bb0003900000000020d004b000000790000613d0000000302d0008c000000790000613d0000000102d0008c0000000a08000029000000ea0000c13d0000000001f100190000000001e1004b00000000090c00190000007d0000613d0000023f0000013d0000000202d0008c0000024b0000c13d00000000011f00490000000001e1004b00000000090c00190000007d0000613d0000018201000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f0000019101000041000000c40010043f0000019201000041000000e40010043f0000018901000041000005ee0001043000000005010000290000000601100039000000000113034f000000000101043b0000ffff0110018f00000000011b004b000001270000c13d0000000601000029000000030b1002100000010001b00089000000010200008a000700000001001d000300000002001d00000000011201cf0000000002b00049000001000900008a000200000009001d000000000292004b0000000001004019000400000001001d0000010101b0008c000001330000413d000000000107004b0000014a0000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b00000181022001980000000002070019000001170000613d0000015f0000013d0000018201000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000018701000041000000c40010043f0000018801000041000000e40010043f0000018901000041000005ee0001043000000000010b004b000001660000c13d000000000107004b000001e30000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b000001810220019800000000020700190000013a0000613d000001f80000013d00000000217400d9000001100110008c0000022d0000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b00000181022001980000000002070019000001500000613d0000000601000029000000000116001a0000022d0000413d0000000802000029000000000121004b000001fe0000213d000002200000013d00050000000b001d000000000d0000190000016d0000013d0000000001c1004b000000000d0900190000000a08000029000002330000c13d000000000107004b000001720000613d00000000217400d9000001100110008c0000022d0000c13d00000000014d004b000002000000813d00000000015d004b0000022d0000213d0000011009d00039000000000189004b000001fe0000213d0000000b01000029000000000c1d00190000003c01c00039000000000113034f000000000101043b000001810e100198000000000d0900190000016d0000613d0000000601000029000000000d16001a0000022d0000413d000000080100002900000000011d004b000001fe0000213d00000009010000290000000001160019000000000113034f000000000101043b00000006020000290000001f0220008c000001930000213d0000000402000029000000000121016f0000000602000029000000000202004b000002230000613d0000000602000029000000050600002900000000622600d9000000080220008c0000022d0000c13d0000000702000029000000000121022f00000000011e004b000002230000c13d000000080100002900000000011d004b000002100000813d000000090100002900000000011d0019000000000113034f000000000101043b000000fb02100270000000f801100270000000070f100190000000000e020019000000200e0060390000000101d0003900000000061e00190000000002d6004b0000022d0000a13d0000000802000029000000000226004b000001fe0000213d000000090200002900000000012100190000007c02c00039000000000223034f0000005c08c00039000000000883034f000000000113034f000000000101043b000000000b08043b000000000c02043b0000001f02e0008c0000000302e00210000001c60000213d0000010008200089000000030a00002900000000088a01cf000000000a200049000000020d000029000000000ada004b0000000008004019000000000181016f00000000080e004b000001cf0000613d000001000820008c0000022d0000213d00000000a8e200d9000000080880008c0000022d0000c13d0000010008200089000000000181022f000000000202004b000001d00000c13d000000000100001900000000020f004b000001690000613d0000000302f0008c000001690000613d0000000102f0008c0000000a08000029000001dc0000c13d0000000001b100190000000001c1004b000000000d0900190000016d0000613d0000023f0000013d0000000202f0008c0000024b0000c13d00000000011b00490000000001c1004b000000000d0900190000016d0000613d000000f00000013d00000000217400d9000001100110008c0000022d0000c13d000000010100002900000060011000390000000002000019000000000742004b000002000000813d000000000752004b0000022d0000213d00000110072000390000000a08000029000000000887004b0000000a08000029000001fe0000213d0000000002210019000000000223034f000000000202043b00000181022001980000000002070019000001e90000613d0000000601000029000000000116001a0000022d0000413d0000000802000029000000000121004b000002200000a13d0000000001000019000005ee000104300000000801000029000000000116004b0000000001000019000000010100603905ec05190000040f0000000b010000290000000a0200002905ec05310000040f000000400200043d00000000001204350000017c010000410000017c0320009c0000000001024019000000400110021000000185011001c7000005ed0001042e0000018c0100004100000000001004350000003201000039000000040010043f0000018d01000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000001801000039000000a40010043f0000018b01000041000000c40010043f0000018401000041000005ee000104300000000601000029000000000101004b0000022d0000c13d0000018201000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000018a01000041000000c40010043f0000018401000041000005ee000104300000018c0100004100000000001004350000001101000039000000040010043f0000018d01000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000018e01000041000000c40010043f0000018f01000041000000e40010043f0000018901000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000002e01000039000000a40010043f0000019301000041000000c40010043f0000019401000041000000e40010043f0000018901000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000019001000041000000c40010043f0000018401000041000005ee000104300000017f0110009c000001fe0000c13d000000040150008a0000018002000041000000400410008c000000000400001900000000040240190000018001100197000000000601004b000000000200a019000001800110009c00000000010400190000000001026019000000000101004b000001fe0000c13d0000000401300370000000000101043b000001810210009c000001fe0000213d00000023021000390000018004000041000000000652004b0000000006000019000000000604801900000180075001970000018002200197000000000872004b0000000004008019000000000272013f000001800220009c00000000020600190000000002046019000000000202004b000001fe0000c13d0000000402100039000000000223034f000000000202043b000001810420009c000001fe0000213d00000024011000390000000004120019000000000454004b000001fe0000213d0000002404300370000000000604043b000001810460009c000001fe0000213d00000023046000390000018007000041000000000854004b0000000008000019000000000807801900000180095001970000018004400197000000000a94004b0000000007008019000000000494013f000001800440009c00000000040800190000000004076019000000000404004b000001fe0000c13d0000000404600039000000000343034f000000000403043b000001810340009c000001fe0000213d00000024036000390000000006340019000000000556004b000001fe0000213d0000000005000411000080010550008c000002c60000c13d05ec02d00000040f000000400200043d00000000001204350000017c010000410000017c0320009c0000000001024019000000400110021000000185011001c7000005ed0001042e0000000001000416000000000101004b000001fe0000c13d0000002001000039000001000010044300000120000004430000017d01000041000005ed0001042e0000018201000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f0000018601000041000000c40010043f0000018401000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000002301000039000000a40010043f0000019501000041000000c40010043f0000019601000041000000e40010043f0000018901000041000005ee000104300000018201000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f0000018301000041000000c40010043f0000018401000041000005ee0001043000030000000000020000001e0530008a000000020d00036700000000065d034f000000000606043b0000000306600210000001970c6001970000000206c001bf000000000746004b000004320000213d000000000b6400490000000207b00210000000000727004b000004400000c13d000000000746004b000002f80000613d0000000005650019000000160630008a000000180710008a0000000008000019000000000985001900000000099d034f000000000909043b00000003099002100000019709900197000000000ac9004b000004080000813d0000000009960019000000020a800210000000000aa70019000000000aad034f00000000099d034f000000000909043b000000000a0a043b0000000009a9013f00000181099001980000041d0000c13d00000002088000390000000009b8004b000002e40000413d0000001f05200190000004580000c13d000001a30520009c0000046a0000813d00000020052001900000047c0000613d00000000080004140000000007120019000000000527004b000000000500001900000001050040390000017c0610019700000001015001900000043a0000c13d0000000001000031000000000571004b0000043a0000413d000100000002001d000300000003001d000200000004001d0000000204600367000001a40580009c0000048e0000813d00000000017100490000017c0110019700000000011403df000000c002800210000001a502200197000001a6022001c700000000012103af000000020200003905ec05e70000040f000000000301001900000060033002700001017c0030019d0000017c0330019700030000000103550000000102200190000004a00000613d0000003f01300039000001a702100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000001810520009c0000000209000029000000030a000029000004340000213d0000000104400190000004340000c13d000000400020043f00000000023104360000001f043000390000000504400272000000010b0000290000033d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000003350000413d000000000400004b0000033f0000613d0000000104000031000000000443004b000004320000213d00000003050003670000001f0430018f00000005033002720000034f0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000003470000413d000000000604004b0000035e0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000004bb0000c13d0000000001020433000000400800043d000001a902000041000000000028043500000004028000390000002003000039000000000032043500000024028000390000000000920435000001aa01100197000000db02b00210000001ab02200197000000000412019f0000001f0290018f00000044018000390000000203a00367000001ac044001c7000300000004001d00000005049002720000037e0000613d000000000500001900000005065002100000000007610019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000003760000413d000000000502004b0000038d0000613d0000000504400210000000000343034f00000000044100190000000302200210000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000000191001900000000000104350000001f01900039000000200200008a000000000121016f0000017c020000410000017c0380009c00000000030200190000000003084019000000400330021000000044011000390000017c0410009c00000000010280190000006001100210000000000131019f00000000030004140000017c0430009c0000000002034019000000c002200210000000000112019f0000800802000039000200000008001d05ec05dd0000040f000000020a000029000000000301001900000060033002700000017c03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000003af0000413d000000000705004b000003c60000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000004cd0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001810410009c000004340000213d0000000102200190000004340000c13d000000400010043f000000200130008c000004320000413d000001ad010000410000000000100439000080040100003900000004001004430000017c0100004100000000020004140000017c0320009c0000000001024019000000c001100210000001ae011001c7000080020200003905ec05e20000040f0000000102200190000004320000613d000000000101043b000000000101004b000004320000613d000000400400043d000001af0100004100000000001404350000000401400039000000030200002900000000002104350000017c0100004100000000020004140000017c0320009c00000000020180190000017c0340009c000200000004001d00000000010440190000004001100210000000c002200210000000000112019f0000018d011001c7000080040200003905ec05dd0000040f000000000301001900000060033002700001017c0030019d0000017c0430019700030000000103550000000102200190000004f30000613d0000000202000029000001810120009c000004340000213d000000400020043f0000000301000029000000000001042d000000400100043d00000064021000390000019c03000041000000000032043500000044021000390000019d030000410000000000320435000000240210003900000024030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019e011001c7000005ee00010430000000400100043d00000064021000390000019f0300004100000000003204350000004402100039000001a0030000410000000000320435000000240210003900000032030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019e011001c7000005ee000104300000000001000019000005ee000104300000018c0100004100000000001004350000004101000039000000040010043f0000018d01000041000005ee000104300000018c0100004100000000001004350000001101000039000000040010043f0000018d01000041000005ee00010430000000400100043d00000084021000390000019803000041000000000032043500000064021000390000019903000041000000000032043500000044021000390000019a030000410000000000320435000000240210003900000048030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019b011001c7000005ee00010430000000400100043d0000004402100039000001a1030000410000000000320435000000240210003900000002030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400100043d0000004402100039000001b2030000410000000000320435000000240210003900000002030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400100043d0000004402100039000001b1030000410000000000320435000000240210003900000002030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400100043d0000004402100039000001b0030000410000000000320435000000240210003900000008030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee000104300000001f0430018f0000000502300272000004ab0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000004a40000413d000000000504004b000004b90000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000005ee00010430000000400100043d0000004402100039000001a8030000410000000000320435000000240210003900000019030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000000400200043d0000001f0430018f0000000503300272000004da0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004d20000413d000000000504004b000004e90000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000017c0100004100000001030000310000017c0430009c00000000030180190000017c0420009c000000000102401900000040011002100000006002300210000000000112019f000005ee00010430000000400200043d0000001f0340018f0000000504400272000005000000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000004f80000413d000000000503004b0000050f0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f00000000001404350000017c0100004100000001030000310000017c0430009c00000000030180190000017c0420009c000000000102401900000040011002100000006002300210000000000112019f000005ee00010430000000000101004b0000051c0000613d000000000001042d000000400100043d0000006402100039000001b30300004100000000003204350000004402100039000001b4030000410000000000320435000000240210003900000023030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c000000000102801900000040011002100000019e011001c7000005ee0001043000000000030004140000000004120019000000000224004b000000000500001900000001050040390000017c021001970000000101500190000005900000c13d0000000001000031000000000541004b000005900000413d0000000202200367000001a40530009c000005960000813d00000000014100490000017c0110019700000000011203df000000c002300210000001a502200197000001a6022001c700000000012103af000080100200003905ec05e70000040f000000000301001900000060033002700001017c0030019d0000017c0330019700030000000103550000000102200190000005a80000613d0000003f01300039000001a702100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000001810520009c000005c30000213d0000000104400190000005c30000c13d000000400020043f00000000023104360000001f0430003900000005044002720000056a0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000005620000413d000000000400004b0000056c0000613d0000000104000031000000000443004b000005c90000213d00000003050003670000001f0430018f00000005033002720000057c0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000005740000413d000000000604004b0000058b0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000005cb0000c13d0000000001020433000000000001042d0000018c0100004100000000001004350000001101000039000000040010043f0000018d01000041000005ee00010430000000400100043d0000004402100039000001b0030000410000000000320435000000240210003900000008030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee000104300000001f0430018f0000000502300272000005b30000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000005ac0000413d000000000504004b000005c10000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000005ee000104300000018c0100004100000000001004350000004101000039000000040010043f0000018d01000041000005ee000104300000000001000019000005ee00010430000000400100043d0000004402100039000001b503000041000000000032043500000024021000390000001f030000390000000000320435000001820200004100000000002104350000000402100039000000200300003900000000003204350000017c020000410000017c0310009c00000000010280190000004001100210000001a2011001c7000005ee00010430000005e0002104210000000102000039000000000001042d0000000002000019000000000001042d000005e5002104230000000102000039000000000001042d0000000002000019000000000001042d000005ea002104230000000102000039000000000001042d0000000002000019000000000001042d000005ec00000432000005ed0001042e000005ee00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000006006d8b500000000000000000000000000000000000000000000000000000000f5e69a478000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720000000000000000000000000000000000000000640000008000000000000000000000000000000000000000000000000000000020000000000000000000000000496e617070726f7072696174652063616c6c6572000000000000000000000000496e636f7272656374206e756d626572206f6620696e697469616c2073746f726167652064696666730000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000072773a20656e756d206b6579206d69736d61746368000000000000000000000069773a20696e697469616c206b6579206d69736d6174636800000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007472616e73666f726d206f72206e6f20636f6d7072657373696f6e3a20636f6d7072657373656420616e642066696e616c206d69736d61746368000000000000756e737570706f72746564206f7065726174696f6e00000000000000000000007375623a20696e697469616c206d696e757320636f6e766572746564206e6f7420657175616c20746f2066696e616c00000000000000000000000000000000006164643a20696e697469616c20706c757320636f6e766572746564206e6f7420657175616c20746f2066696e616c000000000000000000000000000000000000656e756d65726174696f6e20696e6465782073697a6520697320746f6f206c617267650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fff862797465636f646500000000000000000000000000000000000000000000000074696d65732073686f72746572207468616e20746865206f726967696e616c20456e636f6465642064617461206c656e6774682073686f756c6420626520342000000000000000000000000000000000000000a4000000000000000000000000756e647300000000000000000000000000000000000000000000000000000000456e636f646564206368756e6b20696e646578206973206f7574206f6620626f0000000000000000000000000000000000000084000000000000000000000000206f726967696e616c2062797465636f64650000000000000000000000000000456e636f646564206368756e6b20646f6573206e6f74206d6174636820746865706f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe07368612072657475726e656420696e76616c696420646174610000000000000062f84b240000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000079c4f929000000000000000000000000000000000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000007072000000000000000000000000000000000000000000000000000000000000707000000000000000000000000000000000000000000000000000000000000066667300000000000000000000000000000000000000000000000000000000004578747261206461746120696e205f636f6d70726573736564537461746544696b656363616b3235362072657475726e656420696e76616c6964206461746100b4d4241d8a2da2cf3e1bf35dd302345ffbb506f1f41300f3c5e72d9a0e037dc2", + "linkReferences": {}, + "deployedLinkReferences": {}, + "factoryDeps": {} +} diff --git a/src/deps/contracts/ContractDeployer.json b/src/deps/contracts/ContractDeployer.json index c7cdca07..fa7be3ad 100644 --- a/src/deps/contracts/ContractDeployer.json +++ b/src/deps/contracts/ContractDeployer.json @@ -211,6 +211,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_keccak256BytecodeHash", + "type": "bytes32" + } + ], + "name": "forceDeployKeccak256", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, { "inputs": [ { @@ -412,8 +425,8 @@ "type": "function" } ], - "bytecode": "0x0005000000000002000900000000000200000000030100190000006003300270000005630430019700040000004103550003000000010355000005630030019d000200000002001f000100000000001f0000008001000039000000400010043f0000000101200190000000630000c13d0000000002000031000000040120008c0000040f0000413d0000000301000367000000000301043b000000e003300270000005650430009c0000006b0000213d0000056d0430009c000000ab0000213d000005710430009c000001620000613d000005720430009c000002ca0000613d000005730130009c0000040f0000c13d0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000040f0000213d0000000002000411000000020100003900000002011001880000003b0000c13d000005970120009c000002b50000813d000800000002001d0000000000200435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000000101043b000000000201041a000001000300008a000000000232016f0000000903000029000000000232019f000000000021041b000000400100043d000000000031043500000563020000410000000003000414000005630430009c0000000003028019000005630410009c00000000010280190000004001100210000000c002300210000000000112019f0000059e011001c70000800d020000390000000203000039000005ae040000410000000805000029158615710000040f00000001012001900000040f0000613d000000a90000013d0000000001000416000000000101004b0000040f0000c13d0000002001000039000001000010044300000120000004430000056401000041000015870001042e000005660430009c0000000004000410000900000004001d000000e30000213d0000056a0430009c000001840000613d0000056b0430009c000003540000613d0000056c0330009c0000040f0000c13d000000040320008a0000057404000041000000200530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000441034f000000000e04043b0000057504e0009c0000040f0000213d000000240f3000390000000504e002100000000004f40019000000000424004b0000040f0000213d000000090500008a0000000004000411000000000554016f000080070550008c000004e80000c13d00000000050e004b0000051c0000c13d0000000001000416000000000101004b000006b70000c13d0000000001000019000015870001042e0000056e0430009c000002080000613d0000056f0130009c000003e30000613d000005700130009c0000040f0000c13d0000000001000416000000000101004b0000040f0000c13d0000000002000031000000040120008a0000057403000041000000800410008c000000000400001900000000040340190000057401100197000000000501004b000000000300a019000005740110009c00000000010400190000000001036019000000000101004b0000040f0000c13d00000003010003670000000403100370000000000303043b000900000003001d000005760330009c0000040f0000213d0000006401100370000000000101043b000005750310009c0000040f0000213d000000040110003915860ae80000040f00000003040003670000004403400370000000000303043b0000002404400370000000000404043b00000000050100190000000006020019000000090100002900000000020400190000000004050019000000000506001915860b030000040f0000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000005670430009c000002980000613d000005680430009c000004020000613d000005690330009c0000040f0000c13d000000040320008a0000057404000041000000400530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000403100370000000000303043b000800000003001d000005750330009c0000040f0000213d00000008030000290000000002320049000700000002001d000000040220008a0000057403000041000000a00420008c000000000400001900000000040340190000057402200197000000000502004b000000000300a019000005740220009c00000000020400190000000002036019000000000202004b0000040f0000c13d0000002402100370000000000202043b000600000002001d000005760220009c0000040f0000213d00000000020004110000000903000029000000000232004b000004de0000c13d00000008020000290000000402200039000000000121034f000000000201043b0000057a01000041000000800010043f000500000002001d000000840020043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800402000039158615760000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001360000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000012e0000413d000000000705004b000001450000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000004f60000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200230008c0000040f0000413d000000800200043d000000000202004b0000071b0000c13d00000577020000410000000404000029000000000024043500000084021001bf00000020030000390000000000320435000000c40210003900000596030000410000000000320435000000a4011000390000001a020000390000000000210435000000400140021000000581011001c700001588000104300000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000400310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000003020003670000000401200370000000000101043b000005760310009c0000040f0000213d0000002402200370000000000202043b15860be30000040f0000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000000040320008a0000057404000041000000600530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000141034f000000000101043b000800000001001d000005750110009c0000040f0000213d00000024033000390000000801000029000700000003001d0000000001310019000000000121004b0000040f0000213d000000020100003900000002011001880000000101100270000001bb0000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b000004420000613d0000059801000041000000800010043f0000000001000411000600000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001dc0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000001d40000413d000000000705004b000001eb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000061f0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d000000800200043d000000060100002915860be30000040f0000000002010019000600000002001d00000009010000290000000703000029000000080400002915860c0f0000040f00000006010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000000040320008a0000057404000041000000800530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000441034f000000000404043b000700000004001d000005750440009c0000040f0000213d00000024043000390000000703000029000600000004001d0000000003430019000000000223004b0000040f0000213d0000006401100370000000000101043b000500000001001d000000010110008c0000040f0000213d000000020100003900000002011001880000000101100270000002470000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b000004420000613d0000059801000041000000800010043f0000000001000411000400000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000002680000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000002600000413d000000000705004b000002770000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006cf0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d0000000401000029000000090200002900000008030000290000000604000029000000070500002915860b030000040f0000000002010019000800000002001d0000000901000029000000050300002900000006040000290000000705000029158610bd0000040f00000008010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000040f0000213d0000000002000411000000020100003900000002011001880000044e0000c13d0000ffff0120008c0000044e0000a13d000000400100043d0000006402100039000005af0300004100000000003204350000004402100039000005b0030000410000000000320435000000240210003900000029030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000592011001c70000158800010430000000040320008a0000057404000041000000600530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000141034f000000000101043b000700000001001d000005750110009c0000040f0000213d00000024033000390000000701000029000600000003001d0000000001310019000000000121004b0000040f0000213d000000020100003900000002011001880000000101100270000003040000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b000004420000613d0000059801000041000000800010043f0000000001000411000500000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003250000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000031d0000413d000000000705004b000003340000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006450000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d0000000501000029000000090200002900000008030000290000000604000029000000070500002915860b030000040f0000000002010019000800000002001d00000009010000290000000603000029000000070400002915860c0f0000040f00000008010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000900000001001d000005760110009c0000040f0000213d00000009010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000400200043d0000058d0320009c000003fc0000213d000000000101043b0000004003200039000000400030043f000000000101041a000000ff0310018f000000010430008c000007450000213d00000000033204360000000801100270000000ff0110018f000000010410008c000007450000213d00000000001304350000000001020433000000010210008c000007450000213d0000000102000039000000400400043d000000000101004b000003dc0000c13d000005ab01000041000000000014043500000004014000390000000902000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039000900000004001d158615760000040f000000090a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b40000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000003ac0000413d000000000705004b000003c40000613d0000000506600210000000000761034f000000090800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000007630000613d0000001f01400039000000600210018f00000009010000290000000001120019000000000221004b00000000020000190000000102004039000005750410009c000003fc0000213d0000000102200190000003fc0000c13d000000400010043f000000200230008c0000040f0000413d00000009020000290000000002020433000000000202004b00000000020000190000000102006039000000000401001900000000002404350000056301000041000005630240009c0000000001044019000000400110021000000599011001c7000015870001042e0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000005760210009c0000040f0000213d000000400200043d000005ac0320009c000004ae0000413d000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000000040320008a0000057404000041000000800530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b000004110000613d000000000100001900001588000104300000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000441034f000000000404043b000800000004001d000005750440009c0000040f0000213d00000024043000390000000803000029000700000004001d0000000003430019000000000223004b0000040f0000213d0000006401100370000000000101043b000600000001001d000000010110008c0000040f0000213d000000020100003900000002011001880000000101100270000004400000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b0000066b0000c13d0000057701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000005b001000041000000c40010043f000005af01000041000000e40010043f000005b1010000410000158800010430000800000002001d0000000000200435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000400400043d0000058d0240009c000003fc0000213d000000000101043b0000004002400039000000400020043f000000000101041a000000ff0210018f000000010320008c000007450000213d00000000032404360000000801100270000000ff0110018f000000010210008c000007450000213d000600000004001d000700000003001d00000000001304350000000902000029000000010220008c0000074b0000c13d000000000101004b0000074b0000c13d00000001020000390000000701000029000900000002001d0000000000210435000000080100002900000576011001970000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000000101043b00000006020000290000000002020433000000010320008c0000000705000029000007450000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000007450000213d000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000400100043d0000000902000029000000000021043500000563020000410000000003000414000005630430009c0000000003028019000005630410009c00000000010280190000004001100210000000c002300210000000000112019f0000059e011001c70000800d0200003900000002030000390000059f040000410000000805000029158615710000040f0000000101200190000000a90000c13d0000040f0000013d0000004003200039000000400030043f0000002003200039000000000003043500000000000204350000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000400200043d0000058d0320009c000003fc0000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f000000020410008c000007450000813d00000000011204360000000803300270000000ff0330018f000000010430008c000007450000213d00000000003104350000000003020433000000010230008c000007450000213d000000400200043d00000000033204360000000001010433000000010410008c000007450000213d00000000001304350000056301000041000005630320009c00000000010240190000004001100210000005ad011001c7000015870001042e0000057701000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000057801000041000000c40010043f000005790100004100001588000104300000057701000041000000800010043f0000002001000039000000840010043f0000004101000039000000a40010043f000005a001000041000000c40010043f000005a101000041000000e40010043f000005a201000041000001040010043f000005a3010000410000158800010430000000400200043d0000001f0430018f0000000503300272000005030000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004fb0000413d000000000504004b000005120000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000000053200490000008402300039000000c30550008a0000000007000019000000000600001900000005087002100000000008f80019000000000881034f000000000808043b0000057409000041000000000a58004b000000000a000019000000000a098019000005740b500197000005740c800197000000000dbc004b0000000009008019000000000bbc013f000005740bb0009c00000000090ac019000000000909004b0000040f0000c13d0000000008820019000000000881034f000000000808043b0000000006680019000000000886004b000000000800001900000001080040390000000108800190000009590000c13d00000001077000390000000008e7004b000005210000413d0000000001000416000000000161004b000006b70000c13d000000c30100008a0000000001310049000200000001001d0000057601400197000100000001001d000000000900001900050000000e001d00040000000f001d00000005019002100000000002f100190000000301000367000000000221034f000000000202043b000000020300002900000000033000310000057404000041000000000532004b0000000005000019000000000504801900000574033001970000057406200197000000000736004b0000000004008019000000000336013f000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000002f20019000700000002001d0000006002200039000600000002001d000000000121034f000000000101043b000300000001001d0000057e0100004100000000001004390000000901000029000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039000800000009001d158615760000040f000000070b0000290000000809000029000000040f000029000000050e00002900000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400a00043d000005a40100004100000000001a04350000000401a00039000000400200003900000000002104350000000301b00367000000000101043b0000004402a0003900000000001204350000002001b000390000000301100367000000000101043b000005760210009c0000040f0000213d0000006402a0003900000000001204350000004001b000390000000301100367000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b0000040f0000c13d0000008402a00039000000000012043500000006010000290000000301100367000000000101043b000000a402a00039000000000012043500000000020000310000000001b200490000008003b000390000001f0410008a0000000301000367000000000331034f000000000303043b0000057405000041000000000643004b0000000006000019000000000605801900000574044001970000057407300197000000000847004b0000000005008019000000000447013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000003b30019000000000131034f000000000101043b000005750410009c0000040f0000213d000000200330003900000000021200490000057404000041000000000523004b0000000005000019000000000504201900000574022001970000057406300197000000000726004b0000000004008019000000000226013f000005740220009c00000000020500190000000002046019000000000202004b0000040f0000c13d000000c402a00039000000a0040000390000000000420435000000e402a0003900000000001204350000010402a0003900000003033003670000000504100272000005d70000613d000000000500001900000005065002100000000007620019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000005cf0000413d0000001f05100190000005e60000613d0000000504400210000000000343034f00000000044200190000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000340435000000000221001900000000000204350000002402a000390000000103000029000000000032043500000000020004140000000903000029000000040330008c000006180000613d0000001f01100039000000200300008a000000000131016f000005a503000041000005a50410009c000000000103801900000563030000410000056304a0009c00070000000a001d000000000403001900000000040a401900000040044002100000006001100210000000000141019f000005630420009c0000000002038019000000c002200210000000000121019f000005a6011000410000000303000029000000000203004b0000060b0000613d00000594011001c7000080090200003900000009040000290000000005000019158615710000040f0000060d0000013d0000000902000029158615710000040f000400000001035500000000030100190000006003300270000105630030019d00000563043001970000000102200190000000050e000029000000040f0000290000000809000029000000070a000029000008140000613d0000057501a0009c000003fc0000213d0000004000a0043f00000001099000390000000001e9004b000005490000413d000000a90000013d000000400200043d0000001f0430018f00000005033002720000062c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006240000413d000000000504004b0000063b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0430018f0000000503300272000006520000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000064a0000413d000000000504004b000006610000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000059801000041000000800010043f0000000001000411000500000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000068a0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000006820000413d000000000705004b000006990000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006f50000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d000000800200043d000000050100002915860be30000040f0000000002010019000500000002001d0000000901000029000000060300002900000007040000290000000805000029158610bd0000040f00000005010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000000400100043d0000008402100039000005a80300004100000000003204350000006402100039000005a90300004100000000003204350000004402100039000005aa030000410000000000320435000000240210003900000045030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c000000000102801900000040011002100000059d011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000006dc0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006d40000413d000000000504004b000006eb0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0430018f0000000503300272000007020000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006fa0000413d000000000504004b000007110000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000c002100039000000400020043f00000004020000290000000000020435000000a001100039000200000001001d000000000001043500000008010000290000002401100039000100000001001d0000000301100367000000000101043b000300000001001d000005760110009c0000040f0000213d00000003010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000000101043b00000004020000290000000002020433000000010320008c000007450000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000002020000290000000002020433000000010320008c000007890000a13d000005a70100004100000000001004350000002101000039000000040010043f0000058c010000410000158800010430000000400100043d00000084021000390000059a03000041000000000032043500000064021000390000059b03000041000000000032043500000044021000390000059c030000410000000000320435000000240210003900000043030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c000000000102801900000040011002100000059d011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000007700000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007680000413d000000000504004b0000077f0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000080100002900000084021000390000000301000367000000000221034f000000000202043b0000000703000029000000230330008a0000057404000041000000000532004b0000000005000019000000000504801900000574033001970000057406200197000000000736004b0000000004008019000000000336013f000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d000000080300002900000000023200190000000403200039000000000331034f000000000303043b000700000003001d000005750330009c0000040f0000213d0000000703000029000000000330007900000024052000390000057402000041000000000435004b000000000400001900000000040220190000057403300197000400000005001d0000057405500197000000000635004b0000000002008019000000000335013f000005740330009c000000000204c019000000000202004b0000040f0000c13d00000008020000290000004402200039000000000121034f000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b0000040f0000c13d0000000002000416000800000002001d000000000101004b0000083a0000c13d0000000801000029000000000101004b000008920000c13d0000057e0100004100000000001004390000800202000039000000040020044300000563010000410000000003000414000005630430009c0000000001034019000000c0011002100000057f011001c7158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d0000002401400039000000050200002900000000002104350000059301000041000000000014043500000004014000390000000302000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000800000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000009050000613d0000000801000029000005750110009c000003fc0000213d0000000801000029000000400010043f00000001010000290000000301100367000000000701043b000005760170009c0000040f0000213d00000563010000410000000002000414000005630320009c0000000001024019000000c00110021000000594011001c70000800d020000390000000403000039000005950400004100000006050000290000000506000029158615710000040f0000000101200190000000a90000c13d0000040f0000013d000000400200043d0000001f0340018f0000000504400272000008210000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008190000413d000000000503004b000008300000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000000801000029000000000101004b000008a70000c13d0000057e0100004100000000001004390000800202000039000000040020044300000563010000410000000003000414000005630430009c0000000001034019000000c0011002100000057f011001c7158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d000005820100004100000000001404350000000401400039000000030200002900000000002104350000000501000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039000200000002001d158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000008df0000613d0000000901000029000005750110009c000003fc0000213d0000000901000029000000400010043f0000000801000029000000000101004b000008780000613d000000000100041600000586011001970000000000010417000000000100041400000003020003670000000703000029000000000303004b000009510000c13d0000000003000031000005870410009c0000095f0000413d000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c70000158800010430000000400100043d000000640210003900000590030000410000000000320435000000440210003900000591030000410000000000320435000000240210003900000038030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000592011001c700001588000104300000057e0100004100000000001004390000800a01000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d00000580010000410000000000140435000000440140003900000000020004160000000000210435000000240140003900000003020000290000000000210435000000090100002900000576011001970000000402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f00000581011001c70000800a02000039158615710000040f00000000030100190000006003300270000105630030019d0000056304300197000400000001035500000001022001900000092b0000613d0000000901000029000005750110009c000003fc0000213d0000000901000029000000400010043f0000083d0000013d000000400200043d0000001f0340018f0000000504400272000008ec0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008e40000413d000000000503004b000008fb0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000009120000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000090a0000413d000000000503004b000009210000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000009380000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000009300000413d000000000503004b000009470000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000007030000290000000404000029000000000343001a0000056304400197000009590000413d0000000005000031000000000635004b00000a990000813d000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000005630330019700000000023203df000000c001100210000005880110019700000589011001c700000000011203af0000000302000029000000060d000029158615800000040f00000000030100190000006003300270000105630030019d00000563033001970004000000010355000000010220019000000a7e0000613d0000003f013000390000058a01100197000000400200043d0000000001120019000800000002001d000000000221004b00000000020000190000000102004039000005750410009c000003fc0000213d0000000102200190000003fc0000c13d000000400010043f000000080100002900000000073104360000001f0130003900000005011002720000098c0000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b000009840000413d000700000007001d000000000100004b0000098f0000613d0000000101000031000000000113004b0000040f0000213d00000004020003670000001f0130018f00000005033002720000000707000029000009a00000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000009980000413d000000000401004b000009b00000613d0000000503300210000000000232034f000000070400002900000000033400190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f00000000001304350000057e0100004100000000001004390000000202000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d0000058b01000041000000000014043500000004014000390000000302000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d00000563043001970004000000010355000000010220019000000a9c0000613d0000000901000029000005750110009c000003fc0000213d0000000901000029000000400010043f000000080100002900000000010104330000057402000041000000200310008c000000000300001900000000030240190000057404100197000000000504004b000000000200a019000005740440009c000000000203c019000000000202004b0000040f0000c13d00000007020000290000000002020433000005750320009c0000040f0000213d0000000703000029000000000131001900000000023200190000001f032000390000057404000041000000000513004b0000000005000019000000000504801900000574033001970000057406100197000000000763004b0000000004008019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000023020434000005750430009c000003fc0000213d00000005043002100000003f04400039000000200500008a000000000454016f00000009050000290000000004540019000005750540009c000003fc0000213d000000400040043f0000000904000029000000000034043500000006033002100000000003230019000000000413004b0000040f0000213d000000000432004b00000a320000813d000000090400002900000000052100490000057406000041000000400750008c000000000700001900000000070640190000057405500197000000000805004b000000000600a019000005740550009c00000000050700190000000005066019000000000505004b0000040f0000c13d000000400500043d0000058d0650009c000003fc0000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b00000a170000413d0000057e0100004100000000001004390000800501000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400300043d0000002401300039000000400200003900000000002104350000058e0100004100000000001304350000000401300039000000030200002900000000002104350000000901000029000000000101043300000044023000390000000000120435000800000003001d0000006402300039000000000301004b00000a610000613d000000000300001900000009040000290000002004400039000900000004001d0000000004040433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b00000a550000413d000000080400002900000000014200490000056302000041000005630340009c000000000302001900000000030440190000004003300210000005630410009c00000000010280190000006001100210000000000131019f0000000003000414000005630430009c0000000002034019000000c002200210000000000121019f0000800502000039158615710000040f00000000030100190000006003300270000105630030019d00000563043001970004000000010355000000010220019000000ac20000613d0000000801000029000005750110009c000003fc0000213d000007fe0000013d0000001f0430018f000000050230027200000a890000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000a820000413d000000000504004b00000a970000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000000242034f00000000033500490000087e0000013d000000400200043d0000001f0340018f000000050440027200000aa90000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000aa10000413d000000000503004b00000ab80000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f000000050440027200000acf0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000ac70000413d000000000503004b00000ade0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000001f031000390000057404000041000000000523004b0000000005000019000000000504401900000574062001970000057403300197000000000763004b000000000400a019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b00000b010000613d0000000303100367000000000303043b000005750430009c00000b010000213d00000020011000390000000004310019000000000224004b00000b010000213d0000000002030019000000000001042d000000000100001900001588000104300003000000000002000300000002001d00000000080004140000000302000367000000000605004b00000b160000613d00000563064001970000000007450019000000000457004b00000000040000190000000104004039000000010440019000000b9e0000c13d0000000004000031000000000574004b00000b9e0000413d000000000262034f000000000574004900000b170000013d0000000005000031000100000001001d000200000003001d000005870480009c00000ba40000813d000005630350019700000000023203df000000c0018002100000058801100197000005b2011001c700000000011203af00008010020000391586157b0000040f00000000030100190000006003300270000105630030019d00000563033001970004000000010355000000010220019000000bb60000613d0000003f013000390000058a02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000005750520009c00000b960000213d000000010440019000000b960000c13d000000400020043f00000000023104360000001f04300039000000050440027200000b450000613d00000000050000310000000305500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000b3d0000413d000000000400004b00000b470000613d0000000104000031000000000443004b00000b9c0000213d00000004050003670000001f0430018f000000050330027200000b570000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000b4f0000413d000000000604004b00000b660000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c0000000204000029000000010500002900000bd10000c13d0000000002020433000000400100043d000000a0031000390000000000230435000000800210003900000003030000290000000000320435000000600210003900000000004204350000057602500197000000400310003900000000002304350000002002100039000005b4030000410000000000320435000000a0030000390000000000310435000005b50310009c00000b960000213d000000c003100039000000400030043f0000056303000041000005630420009c000000000203801900000040022002100000000001010433000005630410009c00000000010380190000006001100210000000000121019f0000000002000414000005630420009c0000000002038019000000c002200210000000000112019f00000594011001c70000801002000039158615760000040f000000010220019000000b9c0000613d000000000101043b0000057601100197000000000001042d000005a70100004100000000001004350000004101000039000000040010043f0000058c01000041000015880001043000000000010000190000158800010430000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000001f0430018f000000050230027200000bc10000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000bba0000413d000000000504004b00000bcf0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000400100043d0000004402100039000005b303000041000000000032043500000024021000390000001f030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c70000158800010430000000400300043d0000006004300039000000000024043500000576011001970000004002300039000000000012043500000060010000390000000001130436000005b6020000410000000000210435000005b70230009c00000c070000813d0000008002300039000000400020043f0000056302000041000005630410009c000000000102801900000040011002100000000003030433000005630430009c00000000030280190000006003300210000000000113019f0000000003000414000005630430009c0000000002034019000000c002200210000000000112019f00000594011001c70000801002000039158615760000040f000000010220019000000c0d0000613d000000000101043b0000057601100197000000000001042d000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000000000100001900001588000104300008000000000002000700000001001d000000000101004b00000f080000613d000100000003001d000400000004001d000000400400043d000300000002001d00000576022001970000ffff0120008c00000f1a0000a13d000005b80100004100000000001404350000000401400039000800000002001d000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039000600000002001d000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000c400000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000c380000413d000000000705004b00000c4f0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000f2e0000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005750240009c00000ef60000213d000000010110019000000ef60000c13d000000400040043f0000001f0130008c00000ef40000a13d00000000010a0433000000000101004b000000040140003900000f540000c13d000005ba0200004100000000002404350000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800302000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000c880000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000c800000413d000000000705004b00000c970000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000f640000613d0000001f01400039000000600110018f0000000004a10019000005750140009c00000ef60000213d000000400040043f000000200130008c00000ef40000413d00000000010a0433000000000101004b00000f8a0000c13d0000057a01000041000000000014043500000004014000390000000702000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800402000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000ccb0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000cc30000413d000000000705004b00000cda0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000f9b0000613d0000001f01400039000000600110018f0000000004a10019000005750140009c00000ef60000213d000000400040043f000000200130008c00000ef40000413d00000000010a0433000000000101004b00000fc10000613d0000058d0140009c00000ef60000213d0000004001400039000000400010043f0000000001040436000200000001001d000000000001043500000008010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039000500000004001d158615760000040f0000000503000029000000010220019000000ef40000613d000000000101043b0000000002030433000000020320008c00000efc0000813d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000002020000290000000002020433000000010320008c00000efc0000213d000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b00000000010004160000057e020000410000000000200439000000000101004b00000d840000613d0000800a01000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039000500000002001d158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d00000580010000410000000000140435000000440140003900000000020004160000000000210435000000240140003900000008020000290000000000210435000000000100041000000576011001970000000402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000200000004001d00000000010440190000004001100210000000c002200210000000000112019f00000581011001c70000800a02000039158615710000040f00000000030100190000006003300270000105630030019d0000056304300197000400000001035500000001022001900000104b0000613d0000000202000029000005750120009c00000ef60000213d000000400020043f0000057e0100004100000000001004390000000502000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000010710000613d0000000502000029000005750120009c00000ef60000213d000000400020043f00000000010004160000058601100197000000000001041700000db50000013d0000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000010970000613d0000000502000029000005750120009c00000ef60000213d000000400020043f000000000100041400000003020003670000000404000029000000000304004b00000dc90000613d0000000005040019000000010300002900000563043001970000000003350019000000000553004b00000000050000190000000105004039000000010550019000000f020000c13d0000000005000031000000000635004b00000f020000413d000000000242034f000000000335004900000dca0000013d0000000003000031000005870410009c00000fd20000813d0000000004000411000005630330019700000000023203df000000c001100210000005880110019700000589011001c700000000011203af000200000004001d000005760d4001970000000302000029158615800000040f00000000030100190000006003300270000105630030019d00000563033001970004000000010355000000010220019000000fe40000613d0000003f013000390000058a01100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005750410009c00000ef60000213d000000010220019000000ef60000c13d000000400010043f000500000005001d00000000073504360000001f01300039000000050110027200000dfa0000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b00000df20000413d000000000100004b00000dfc0000613d0000000101000031000000000113004b00000ef40000213d00000004020003670000001f0130018f000000050330027200000e0c0000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b00000e040000413d000000000401004b00000e1b0000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f00000000001304350000057e0100004100000000001004390000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7000400000007001d158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d0000058b01000041000000000014043500000004014000390000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d00000563043001970004000000010355000000010220019000000fff0000613d0000000609000029000005750190009c000000050100002900000ef60000213d000000400090043f00000000010104330000057402000041000000200310008c000000000300001900000000030240190000057404100197000000000504004b000000000200a019000005740440009c000000000203c019000000000202004b000000040400002900000ef40000c13d0000000002040433000005750320009c00000ef40000213d000000000141001900000000024200190000001f032000390000057404000041000000000513004b0000000005000019000000000504801900000574033001970000057406100197000000000763004b0000000004008019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b00000ef40000c13d0000000023020434000005750430009c00000ef60000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005750540009c00000ef60000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b00000ef40000213d000000000432004b00000e9a0000813d000000000409001900000000052100490000057406000041000000400750008c000000000700001900000000070640190000057405500197000000000805004b000000000600a019000005740550009c00000000050700190000000005066019000000000505004b00000ef40000c13d000000400500043d0000058d0650009c00000ef60000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b00000e7f0000413d0000057e0100004100000000001004390000800501000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f0000000606000029000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400700043d0000002401700039000000400200003900000000002104350000058e0100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b00000ec60000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b00000ebc0000413d00000000017200490000056302000041000005630370009c000000000302001900000000030740190000004003300210000005630410009c00000000010280190000006001100210000000000131019f0000000003000414000005630430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000010250000613d0000000602000029000005750120009c000000000102001900000ef60000213d000000400010043f00000563010000410000000002000414000005630320009c0000000001024019000000c00110021000000594011001c70000800d0200003900000004030000390000059504000041000000020500002900000007060000290000000807000029158615710000040f000000010120019000000ef40000613d000000000001042d00000000010000190000158800010430000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000002101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000000400100043d0000004402100039000005be03000041000000000032043500000024021000390000001b030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000006401400039000005bc0200004100000000002104350000004401400039000005bd020000410000000000210435000000240140003900000028020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000592011001c70000158800010430000000400200043d0000001f0430018f000000050330027200000f3b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000f330000413d000000000504004b00000f4a0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004402400039000005b903000041000000000032043500000024024000390000001503000039000000000032043500000577020000410000000000240435000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f000000050330027200000f710000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000f690000413d000000000504004b00000f800000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004401400039000005bb020000410000000000210435000000240140003900000013020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f000000050330027200000fa80000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000fa00000413d000000000504004b00000fb70000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000044014000390000059602000041000000000021043500000024014000390000001a020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000001f0430018f000000050230027200000fef0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000fe80000413d000000000504004b00000ffd0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000400200043d0000001f0340018f00000005044002720000100c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000010040000413d000000000503004b0000101b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000010320000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000102a0000413d000000000503004b000010410000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000010580000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000010500000413d000000000503004b000010670000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f00000005044002720000107e0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000010760000413d000000000503004b0000108d0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000010a40000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000109c0000413d000000000503004b000010b30000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300008000000000002000300000005001d000700000001001d000000000101004b000013bc0000613d000400000003001d000100000004001d000000400400043d000200000002001d00000576022001970000ffff0120008c000013ce0000a13d000005b80100004100000000001404350000000401400039000800000002001d000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039000600000002001d000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000010ef0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000010e70000413d000000000705004b000010fe0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000013e20000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005750240009c000013aa0000213d0000000101100190000013aa0000c13d000000400040043f0000001f0130008c000013a80000a13d00000000010a0433000000000101004b000014080000c13d000005ba01000041000000000014043500000004014000390000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800302000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000011370000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000112f0000413d000000000705004b000011460000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000014190000613d0000001f01400039000000600110018f0000000004a10019000005750140009c000013aa0000213d000000400040043f000000200130008c000013a80000413d00000000010a0433000000000101004b00000004014000390000143f0000c13d0000057a0200004100000000002404350000000702000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800402000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000117a0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000011720000413d000000000705004b000011890000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000144f0000613d0000001f01400039000000600110018f0000000004a10019000005750140009c000013aa0000213d000000400040043f000000200130008c000013a80000413d00000000010a0433000000000101004b000014750000613d0000058d0140009c000013aa0000213d0000004001400039000000400010043f000000000304043600000000000304350000000402000029000000020120008c000013b00000813d0000000000240435000400000003001d000000000003043500000008010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039000500000004001d158615760000040f00000005030000290000000102200190000013a80000613d000000000101043b0000000002030433000000010320008c0000000405000029000013b00000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000013b00000213d000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b00000000010004160000057e020000410000000000200439000000000101004b000012380000613d0000800a01000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039000500000002001d158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d00000580010000410000000000140435000000440140003900000000020004160000000000210435000000240140003900000008020000290000000000210435000000000100041000000576011001970000000402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000400000004001d00000000010440190000004001100210000000c002200210000000000112019f00000581011001c70000800a02000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000014ff0000613d0000000402000029000005750120009c000013aa0000213d000000400020043f0000057e0100004100000000001004390000000502000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000015250000613d0000000502000029000005750120009c000013aa0000213d000000400020043f000000000100041600000586011001970000000000010417000012690000013d0000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d0000056304300197000400000001035500000001022001900000154b0000613d0000000502000029000005750120009c000013aa0000213d000000400020043f000000000100041400000003020003670000000304000029000000000304004b0000127d0000613d0000000005040019000000010300002900000563043001970000000003350019000000000553004b000000000500001900000001050040390000000105500190000013b60000c13d0000000005000031000000000635004b000013b60000413d000000000242034f00000000033500490000127e0000013d0000000003000031000005870410009c000014860000813d0000000004000411000005630330019700000000023203df000000c001100210000005880110019700000589011001c700000000011203af000300000004001d000005760d4001970000000202000029158615800000040f00000000030100190000006003300270000105630030019d000005630330019700040000000103550000000102200190000014980000613d0000003f013000390000058a01100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005750410009c000013aa0000213d0000000102200190000013aa0000c13d000000400010043f000500000005001d00000000073504360000001f013000390000000501100272000012ae0000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b000012a60000413d000000000100004b000012b00000613d0000000101000031000000000113004b000013a80000213d00000004020003670000001f0130018f0000000503300272000012c00000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000012b80000413d000000000401004b000012cf0000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f00000000001304350000057e0100004100000000001004390000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7000400000007001d158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d0000058b01000041000000000014043500000004014000390000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000014b30000613d0000000609000029000005750190009c0000000501000029000013aa0000213d000000400090043f00000000010104330000057402000041000000200310008c000000000300001900000000030240190000057404100197000000000504004b000000000200a019000005740440009c000000000203c019000000000202004b0000000404000029000013a80000c13d0000000002040433000005750320009c000013a80000213d000000000141001900000000024200190000001f032000390000057404000041000000000513004b0000000005000019000000000504801900000574033001970000057406100197000000000763004b0000000004008019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b000013a80000c13d0000000023020434000005750430009c000013aa0000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005750540009c000013aa0000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b000013a80000213d000000000432004b0000134e0000813d000000000409001900000000052100490000057406000041000000400750008c000000000700001900000000070640190000057405500197000000000805004b000000000600a019000005740550009c00000000050700190000000005066019000000000505004b000013a80000c13d000000400500043d0000058d0650009c000013aa0000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b000013330000413d0000057e0100004100000000001004390000800501000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f00000006060000290000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400700043d0000002401700039000000400200003900000000002104350000058e0100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b0000137a0000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b000013700000413d00000000017200490000056302000041000005630370009c000000000302001900000000030740190000004003300210000005630410009c00000000010280190000006001100210000000000131019f0000000003000414000005630430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000014d90000613d0000000602000029000005750120009c0000000001020019000013aa0000213d000000400010043f00000563010000410000000002000414000005630320009c0000000001024019000000c00110021000000594011001c70000800d0200003900000004030000390000059504000041000000030500002900000007060000290000000807000029158615710000040f0000000101200190000013a80000613d000000000001042d00000000010000190000158800010430000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000002101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000000400100043d0000004402100039000005be03000041000000000032043500000024021000390000001b030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000006401400039000005bc0200004100000000002104350000004401400039000005bd020000410000000000210435000000240140003900000028020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000592011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000013ef0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000013e70000413d000000000504004b000013fe0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004401400039000005b9020000410000000000210435000000240140003900000015020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000014260000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000141e0000413d000000000504004b000014350000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004402400039000005bb03000041000000000032043500000024024000390000001303000039000000000032043500000577020000410000000000240435000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f00000005033002720000145c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000014540000413d000000000504004b0000146b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000044014000390000059602000041000000000021043500000024014000390000001a020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000001f0430018f0000000502300272000014a30000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000149c0000413d000000000504004b000014b10000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000400200043d0000001f0340018f0000000504400272000014c00000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000014b80000413d000000000503004b000014cf0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000014e60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000014de0000413d000000000503004b000014f50000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f00000005044002720000150c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000015040000413d000000000503004b0000151b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000015320000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000152a0000413d000000000503004b000015410000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000015580000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000015500000413d000000000503004b000015670000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000001574002104210000000102000039000000000001042d0000000002000019000000000001042d00001579002104230000000102000039000000000001042d0000000002000019000000000001042d0000157e002104230000000102000039000000000001042d0000000002000019000000000001042d000000000f0d001900001584002104290000000102000039000000000001042d0000000002000019000000000001042d0000158600000432000015870001042e000015880001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009c4d535a00000000000000000000000000000000000000000000000000000000ec8067c600000000000000000000000000000000000000000000000000000000ec8067c700000000000000000000000000000000000000000000000000000000ecf95b8a00000000000000000000000000000000000000000000000000000000f3385fb6000000000000000000000000000000000000000000000000000000009c4d535b00000000000000000000000000000000000000000000000000000000bb0fd61000000000000000000000000000000000000000000000000000000000e9f18c17000000000000000000000000000000000000000000000000000000005d3826ff000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000007b510fe80000000000000000000000000000000000000000000000000000000084da1fb400000000000000000000000000000000000000000000000000000000187598a5000000000000000000000000000000000000000000000000000000003cda335100000000000000000000000000000000000000000000000000000000571809818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792073656c66000000000000000000000000000000000000000000000000000000000000640000008000000000000000004c6314f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000200000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000579952fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0c2e4ff97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbfad7e232e000000000000000000000000000000000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000006e6f742063616c6c2074686520636f6e7374727563746f7200000000000000005468652076616c7565206d757374206265207a65726f20696620776520646f2000000000000000000000000000000000000000840000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e554686520636f64652068617368206973206e6f74206b6e6f776e0000000000000000000000000000000000000000000000000000000000000000000000010000306395c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000696e6700000000000000000000000000000000000000000000000000000000006f6d2073657175656e7469616c20746f20617262697472617279206f726465724974206973206f6e6c7920706f737369626c6520746f206368616e676520667200000000000000000000000000000000000000a40000000000000000000000000200000000000000000000000000000000000020000000000000000000000000c7544194dab38b1652f35439b9b4806d8b71e113f2cf5c1351cb2ecf7c83959a43616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c4f594552206f7220434f4d504c45585f55504752414445525f434f4e54524143540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4000000800000000000000000f3385fb60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffefb00000000000000000000000000000000000001040000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000006d656e74730000000000000000000000000000000000000000000000000000002074686520636f6d62696e6564206076616c75656073206f66206465706c6f796076616c7565602070726f7669646564206973206e6f7420657175616c20746f4de2e46800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000400000000000000000000000003fb6f4f15ddd4a75588ca934894ad2cdcab25a5012e2515e1783433d0128611a63616c6c20666c6167000000000000000000000000000000000000000000000054686973206d6574686f64207265717569726573207468652073797374656d20000000000000000000000000000000000000008400000080000000000000000000000001000000000000000000000000000000000000000000000000000000006b656363616b3235362072657475726e656420696e76616c69642064617461002020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494000000000000000000000000000000000000000000000000ffffffffffffff3f63bae3a9951d38e8a3fbb7b70909afc1200610fc5bc55ade242f815974674f23000000000000000000000000000000000000000000000000ffffffffffffff80e03fe17700000000000000000000000000000000000000000000000000000000436f64652068617368206973206e6f6e2d7a65726f00000000000000000000005aa9b6b5000000000000000000000000000000000000000000000000000000004163636f756e74206973206f6363757069656400000000000000000000000000656c20737061636500000000000000000000000000000000000000000000000043616e206e6f74206465706c6f7920636f6e74726163747320696e206b65726e42797465636f6465486173682063616e6e6f74206265207a65726f00000000000000000000000000000000000000000000000000000000000000000000000000252a256aeded553d68a8c245babf3e3cb04d83822f59f4b27ba51b68faca9264", - "deployedBytecode": "0x0005000000000002000900000000000200000000030100190000006003300270000005630430019700040000004103550003000000010355000005630030019d000200000002001f000100000000001f0000008001000039000000400010043f0000000101200190000000630000c13d0000000002000031000000040120008c0000040f0000413d0000000301000367000000000301043b000000e003300270000005650430009c0000006b0000213d0000056d0430009c000000ab0000213d000005710430009c000001620000613d000005720430009c000002ca0000613d000005730130009c0000040f0000c13d0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000040f0000213d0000000002000411000000020100003900000002011001880000003b0000c13d000005970120009c000002b50000813d000800000002001d0000000000200435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000000101043b000000000201041a000001000300008a000000000232016f0000000903000029000000000232019f000000000021041b000000400100043d000000000031043500000563020000410000000003000414000005630430009c0000000003028019000005630410009c00000000010280190000004001100210000000c002300210000000000112019f0000059e011001c70000800d020000390000000203000039000005ae040000410000000805000029158615710000040f00000001012001900000040f0000613d000000a90000013d0000000001000416000000000101004b0000040f0000c13d0000002001000039000001000010044300000120000004430000056401000041000015870001042e000005660430009c0000000004000410000900000004001d000000e30000213d0000056a0430009c000001840000613d0000056b0430009c000003540000613d0000056c0330009c0000040f0000c13d000000040320008a0000057404000041000000200530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000441034f000000000e04043b0000057504e0009c0000040f0000213d000000240f3000390000000504e002100000000004f40019000000000424004b0000040f0000213d000000090500008a0000000004000411000000000554016f000080070550008c000004e80000c13d00000000050e004b0000051c0000c13d0000000001000416000000000101004b000006b70000c13d0000000001000019000015870001042e0000056e0430009c000002080000613d0000056f0130009c000003e30000613d000005700130009c0000040f0000c13d0000000001000416000000000101004b0000040f0000c13d0000000002000031000000040120008a0000057403000041000000800410008c000000000400001900000000040340190000057401100197000000000501004b000000000300a019000005740110009c00000000010400190000000001036019000000000101004b0000040f0000c13d00000003010003670000000403100370000000000303043b000900000003001d000005760330009c0000040f0000213d0000006401100370000000000101043b000005750310009c0000040f0000213d000000040110003915860ae80000040f00000003040003670000004403400370000000000303043b0000002404400370000000000404043b00000000050100190000000006020019000000090100002900000000020400190000000004050019000000000506001915860b030000040f0000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000005670430009c000002980000613d000005680430009c000004020000613d000005690330009c0000040f0000c13d000000040320008a0000057404000041000000400530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000403100370000000000303043b000800000003001d000005750330009c0000040f0000213d00000008030000290000000002320049000700000002001d000000040220008a0000057403000041000000a00420008c000000000400001900000000040340190000057402200197000000000502004b000000000300a019000005740220009c00000000020400190000000002036019000000000202004b0000040f0000c13d0000002402100370000000000202043b000600000002001d000005760220009c0000040f0000213d00000000020004110000000903000029000000000232004b000004de0000c13d00000008020000290000000402200039000000000121034f000000000201043b0000057a01000041000000800010043f000500000002001d000000840020043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800402000039158615760000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001360000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000012e0000413d000000000705004b000001450000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000004f60000613d0000001f01400039000000600110018f00000080021001bf000400000002001d000000400020043f000000200230008c0000040f0000413d000000800200043d000000000202004b0000071b0000c13d00000577020000410000000404000029000000000024043500000084021001bf00000020030000390000000000320435000000c40210003900000596030000410000000000320435000000a4011000390000001a020000390000000000210435000000400140021000000581011001c700001588000104300000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000400310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000003020003670000000401200370000000000101043b000005760310009c0000040f0000213d0000002402200370000000000202043b15860be30000040f0000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000000040320008a0000057404000041000000600530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000141034f000000000101043b000800000001001d000005750110009c0000040f0000213d00000024033000390000000801000029000700000003001d0000000001310019000000000121004b0000040f0000213d000000020100003900000002011001880000000101100270000001bb0000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b000004420000613d0000059801000041000000800010043f0000000001000411000600000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001dc0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000001d40000413d000000000705004b000001eb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000061f0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d000000800200043d000000060100002915860be30000040f0000000002010019000600000002001d00000009010000290000000703000029000000080400002915860c0f0000040f00000006010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000000040320008a0000057404000041000000800530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000441034f000000000404043b000700000004001d000005750440009c0000040f0000213d00000024043000390000000703000029000600000004001d0000000003430019000000000223004b0000040f0000213d0000006401100370000000000101043b000500000001001d000000010110008c0000040f0000213d000000020100003900000002011001880000000101100270000002470000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b000004420000613d0000059801000041000000800010043f0000000001000411000400000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000002680000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000002600000413d000000000705004b000002770000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006cf0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d0000000401000029000000090200002900000008030000290000000604000029000000070500002915860b030000040f0000000002010019000800000002001d0000000901000029000000050300002900000006040000290000000705000029158610bd0000040f00000008010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000040f0000213d0000000002000411000000020100003900000002011001880000044e0000c13d0000ffff0120008c0000044e0000a13d000000400100043d0000006402100039000005af0300004100000000003204350000004402100039000005b0030000410000000000320435000000240210003900000029030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000592011001c70000158800010430000000040320008a0000057404000041000000600530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000141034f000000000101043b000700000001001d000005750110009c0000040f0000213d00000024033000390000000701000029000600000003001d0000000001310019000000000121004b0000040f0000213d000000020100003900000002011001880000000101100270000003040000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b000004420000613d0000059801000041000000800010043f0000000001000411000500000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003250000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000031d0000413d000000000705004b000003340000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006450000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d0000000501000029000000090200002900000008030000290000000604000029000000070500002915860b030000040f0000000002010019000800000002001d00000009010000290000000603000029000000070400002915860c0f0000040f00000008010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000900000001001d000005760110009c0000040f0000213d00000009010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000400200043d0000058d0320009c000003fc0000213d000000000101043b0000004003200039000000400030043f000000000101041a000000ff0310018f000000010430008c000007450000213d00000000033204360000000801100270000000ff0110018f000000010410008c000007450000213d00000000001304350000000001020433000000010210008c000007450000213d0000000102000039000000400400043d000000000101004b000003dc0000c13d000005ab01000041000000000014043500000004014000390000000902000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039000900000004001d158615760000040f000000090a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b40000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000003ac0000413d000000000705004b000003c40000613d0000000506600210000000000761034f000000090800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000007630000613d0000001f01400039000000600210018f00000009010000290000000001120019000000000221004b00000000020000190000000102004039000005750410009c000003fc0000213d0000000102200190000003fc0000c13d000000400010043f000000200230008c0000040f0000413d00000009020000290000000002020433000000000202004b00000000020000190000000102006039000000000401001900000000002404350000056301000041000005630240009c0000000001044019000000400110021000000599011001c7000015870001042e0000000001000416000000000101004b0000040f0000c13d000000040100008a00000000011000310000057402000041000000200310008c000000000300001900000000030240190000057401100197000000000401004b000000000200a019000005740110009c00000000010300190000000001026019000000000101004b0000040f0000c13d00000004010000390000000301100367000000000101043b000005760210009c0000040f0000213d000000400200043d000005ac0320009c000004ae0000413d000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000000040320008a0000057404000041000000800530008c000000000500001900000000050440190000057403300197000000000603004b000000000400a019000005740330009c00000000030500190000000003046019000000000303004b000004110000613d000000000100001900001588000104300000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005750430009c0000040f0000213d00000023043000390000057405000041000000000624004b0000000006000019000000000605801900000574072001970000057404400197000000000874004b0000000005008019000000000474013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000404300039000000000441034f000000000404043b000800000004001d000005750440009c0000040f0000213d00000024043000390000000803000029000700000004001d0000000003430019000000000223004b0000040f0000213d0000006401100370000000000101043b000600000001001d000000010110008c0000040f0000213d000000020100003900000002011001880000000101100270000004400000c13d0000000001000411000005970110009c00000000010000190000000101004039000000000101004b0000066b0000c13d0000057701000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f000005b001000041000000c40010043f000005af01000041000000e40010043f000005b1010000410000158800010430000800000002001d0000000000200435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000400400043d0000058d0240009c000003fc0000213d000000000101043b0000004002400039000000400020043f000000000101041a000000ff0210018f000000010320008c000007450000213d00000000032404360000000801100270000000ff0110018f000000010210008c000007450000213d000600000004001d000700000003001d00000000001304350000000902000029000000010220008c0000074b0000c13d000000000101004b0000074b0000c13d00000001020000390000000701000029000900000002001d0000000000210435000000080100002900000576011001970000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000000101043b00000006020000290000000002020433000000010320008c0000000705000029000007450000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000007450000213d000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000400100043d0000000902000029000000000021043500000563020000410000000003000414000005630430009c0000000003028019000005630410009c00000000010280190000004001100210000000c002300210000000000112019f0000059e011001c70000800d0200003900000002030000390000059f040000410000000805000029158615710000040f0000000101200190000000a90000c13d0000040f0000013d0000004003200039000000400030043f0000002003200039000000000003043500000000000204350000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000400200043d0000058d0320009c000003fc0000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f000000020410008c000007450000813d00000000011204360000000803300270000000ff0330018f000000010430008c000007450000213d00000000003104350000000003020433000000010230008c000007450000213d000000400200043d00000000033204360000000001010433000000010410008c000007450000213d00000000001304350000056301000041000005630320009c00000000010240190000004001100210000005ad011001c7000015870001042e0000057701000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f0000057801000041000000c40010043f000005790100004100001588000104300000057701000041000000800010043f0000002001000039000000840010043f0000004101000039000000a40010043f000005a001000041000000c40010043f000005a101000041000000e40010043f000005a201000041000001040010043f000005a3010000410000158800010430000000400200043d0000001f0430018f0000000503300272000005030000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004fb0000413d000000000504004b000005120000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000000053200490000008402300039000000c30550008a0000000007000019000000000600001900000005087002100000000008f80019000000000881034f000000000808043b0000057409000041000000000a58004b000000000a000019000000000a098019000005740b500197000005740c800197000000000dbc004b0000000009008019000000000bbc013f000005740bb0009c00000000090ac019000000000909004b0000040f0000c13d0000000008820019000000000881034f000000000808043b0000000006680019000000000886004b000000000800001900000001080040390000000108800190000009590000c13d00000001077000390000000008e7004b000005210000413d0000000001000416000000000161004b000006b70000c13d000000c30100008a0000000001310049000200000001001d0000057601400197000100000001001d000000000900001900050000000e001d00040000000f001d00000005019002100000000002f100190000000301000367000000000221034f000000000202043b000000020300002900000000033000310000057404000041000000000532004b0000000005000019000000000504801900000574033001970000057406200197000000000736004b0000000004008019000000000336013f000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000002f20019000700000002001d0000006002200039000600000002001d000000000121034f000000000101043b000300000001001d0000057e0100004100000000001004390000000901000029000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039000800000009001d158615760000040f000000070b0000290000000809000029000000040f000029000000050e00002900000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400a00043d000005a40100004100000000001a04350000000401a00039000000400200003900000000002104350000000301b00367000000000101043b0000004402a0003900000000001204350000002001b000390000000301100367000000000101043b000005760210009c0000040f0000213d0000006402a0003900000000001204350000004001b000390000000301100367000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b0000040f0000c13d0000008402a00039000000000012043500000006010000290000000301100367000000000101043b000000a402a00039000000000012043500000000020000310000000001b200490000008003b000390000001f0410008a0000000301000367000000000331034f000000000303043b0000057405000041000000000643004b0000000006000019000000000605801900000574044001970000057407300197000000000847004b0000000005008019000000000447013f000005740440009c00000000040600190000000004056019000000000404004b0000040f0000c13d0000000003b30019000000000131034f000000000101043b000005750410009c0000040f0000213d000000200330003900000000021200490000057404000041000000000523004b0000000005000019000000000504201900000574022001970000057406300197000000000726004b0000000004008019000000000226013f000005740220009c00000000020500190000000002046019000000000202004b0000040f0000c13d000000c402a00039000000a0040000390000000000420435000000e402a0003900000000001204350000010402a0003900000003033003670000000504100272000005d70000613d000000000500001900000005065002100000000007620019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000005cf0000413d0000001f05100190000005e60000613d0000000504400210000000000343034f00000000044200190000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000340435000000000221001900000000000204350000002402a000390000000103000029000000000032043500000000020004140000000903000029000000040330008c000006180000613d0000001f01100039000000200300008a000000000131016f000005a503000041000005a50410009c000000000103801900000563030000410000056304a0009c00070000000a001d000000000403001900000000040a401900000040044002100000006001100210000000000141019f000005630420009c0000000002038019000000c002200210000000000121019f000005a6011000410000000303000029000000000203004b0000060b0000613d00000594011001c7000080090200003900000009040000290000000005000019158615710000040f0000060d0000013d0000000902000029158615710000040f000400000001035500000000030100190000006003300270000105630030019d00000563043001970000000102200190000000050e000029000000040f0000290000000809000029000000070a000029000008140000613d0000057501a0009c000003fc0000213d0000004000a0043f00000001099000390000000001e9004b000005490000413d000000a90000013d000000400200043d0000001f0430018f00000005033002720000062c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006240000413d000000000504004b0000063b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0430018f0000000503300272000006520000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000064a0000413d000000000504004b000006610000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000059801000041000000800010043f0000000001000411000500000001001d000000840010043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057b011001c70000800302000039158615710000040f000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000068a0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000006820000413d000000000705004b000006990000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006f50000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000040f0000413d000000800200043d000000050100002915860be30000040f0000000002010019000500000002001d0000000901000029000000060300002900000007040000290000000805000029158610bd0000040f00000005010000290000057601100197000000400200043d00000000001204350000056301000041000005630320009c0000000001024019000000400110021000000599011001c7000015870001042e000000400100043d0000008402100039000005a80300004100000000003204350000006402100039000005a90300004100000000003204350000004402100039000005aa030000410000000000320435000000240210003900000045030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c000000000102801900000040011002100000059d011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000006dc0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006d40000413d000000000504004b000006eb0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0430018f0000000503300272000007020000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006fa0000413d000000000504004b000007110000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000c002100039000000400020043f00000004020000290000000000020435000000a001100039000200000001001d000000000001043500000008010000290000002401100039000100000001001d0000000301100367000000000101043b000300000001001d000005760110009c0000040f0000213d00000003010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039158615760000040f00000001022001900000040f0000613d000000000101043b00000004020000290000000002020433000000010320008c000007450000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000002020000290000000002020433000000010320008c000007890000a13d000005a70100004100000000001004350000002101000039000000040010043f0000058c010000410000158800010430000000400100043d00000084021000390000059a03000041000000000032043500000064021000390000059b03000041000000000032043500000044021000390000059c030000410000000000320435000000240210003900000043030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c000000000102801900000040011002100000059d011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000007700000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007680000413d000000000504004b0000077f0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000080100002900000084021000390000000301000367000000000221034f000000000202043b0000000703000029000000230330008a0000057404000041000000000532004b0000000005000019000000000504801900000574033001970000057406200197000000000736004b0000000004008019000000000336013f000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d000000080300002900000000023200190000000403200039000000000331034f000000000303043b000700000003001d000005750330009c0000040f0000213d0000000703000029000000000330007900000024052000390000057402000041000000000435004b000000000400001900000000040220190000057403300197000400000005001d0000057405500197000000000635004b0000000002008019000000000335013f000005740330009c000000000204c019000000000202004b0000040f0000c13d00000008020000290000004402200039000000000121034f000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b0000040f0000c13d0000000002000416000800000002001d000000000101004b0000083a0000c13d0000000801000029000000000101004b000008920000c13d0000057e0100004100000000001004390000800202000039000000040020044300000563010000410000000003000414000005630430009c0000000001034019000000c0011002100000057f011001c7158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d0000002401400039000000050200002900000000002104350000059301000041000000000014043500000004014000390000000302000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000800000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000009050000613d0000000801000029000005750110009c000003fc0000213d0000000801000029000000400010043f00000001010000290000000301100367000000000701043b000005760170009c0000040f0000213d00000563010000410000000002000414000005630320009c0000000001024019000000c00110021000000594011001c70000800d020000390000000403000039000005950400004100000006050000290000000506000029158615710000040f0000000101200190000000a90000c13d0000040f0000013d000000400200043d0000001f0340018f0000000504400272000008210000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008190000413d000000000503004b000008300000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000000801000029000000000101004b000008a70000c13d0000057e0100004100000000001004390000800202000039000000040020044300000563010000410000000003000414000005630430009c0000000001034019000000c0011002100000057f011001c7158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d000005820100004100000000001404350000000401400039000000030200002900000000002104350000000501000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039000200000002001d158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000008df0000613d0000000901000029000005750110009c000003fc0000213d0000000901000029000000400010043f0000000801000029000000000101004b000008780000613d000000000100041600000586011001970000000000010417000000000100041400000003020003670000000703000029000000000303004b000009510000c13d0000000003000031000005870410009c0000095f0000413d000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c70000158800010430000000400100043d000000640210003900000590030000410000000000320435000000440210003900000591030000410000000000320435000000240210003900000038030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000592011001c700001588000104300000057e0100004100000000001004390000800a01000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d00000580010000410000000000140435000000440140003900000000020004160000000000210435000000240140003900000003020000290000000000210435000000090100002900000576011001970000000402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f00000581011001c70000800a02000039158615710000040f00000000030100190000006003300270000105630030019d0000056304300197000400000001035500000001022001900000092b0000613d0000000901000029000005750110009c000003fc0000213d0000000901000029000000400010043f0000083d0000013d000000400200043d0000001f0340018f0000000504400272000008ec0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008e40000413d000000000503004b000008fb0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000009120000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000090a0000413d000000000503004b000009210000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000009380000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000009300000413d000000000503004b000009470000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000007030000290000000404000029000000000343001a0000056304400197000009590000413d0000000005000031000000000635004b00000a990000813d000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000005630330019700000000023203df000000c001100210000005880110019700000589011001c700000000011203af0000000302000029000000060d000029158615800000040f00000000030100190000006003300270000105630030019d00000563033001970004000000010355000000010220019000000a7e0000613d0000003f013000390000058a01100197000000400200043d0000000001120019000800000002001d000000000221004b00000000020000190000000102004039000005750410009c000003fc0000213d0000000102200190000003fc0000c13d000000400010043f000000080100002900000000073104360000001f0130003900000005011002720000098c0000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b000009840000413d000700000007001d000000000100004b0000098f0000613d0000000101000031000000000113004b0000040f0000213d00000004020003670000001f0130018f00000005033002720000000707000029000009a00000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000009980000413d000000000401004b000009b00000613d0000000503300210000000000232034f000000070400002900000000033400190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f00000000001304350000057e0100004100000000001004390000000202000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400400043d0000058b01000041000000000014043500000004014000390000000302000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d00000563043001970004000000010355000000010220019000000a9c0000613d0000000901000029000005750110009c000003fc0000213d0000000901000029000000400010043f000000080100002900000000010104330000057402000041000000200310008c000000000300001900000000030240190000057404100197000000000504004b000000000200a019000005740440009c000000000203c019000000000202004b0000040f0000c13d00000007020000290000000002020433000005750320009c0000040f0000213d0000000703000029000000000131001900000000023200190000001f032000390000057404000041000000000513004b0000000005000019000000000504801900000574033001970000057406100197000000000763004b0000000004008019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b0000040f0000c13d0000000023020434000005750430009c000003fc0000213d00000005043002100000003f04400039000000200500008a000000000454016f00000009050000290000000004540019000005750540009c000003fc0000213d000000400040043f0000000904000029000000000034043500000006033002100000000003230019000000000413004b0000040f0000213d000000000432004b00000a320000813d000000090400002900000000052100490000057406000041000000400750008c000000000700001900000000070640190000057405500197000000000805004b000000000600a019000005740550009c00000000050700190000000005066019000000000505004b0000040f0000c13d000000400500043d0000058d0650009c000003fc0000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b00000a170000413d0000057e0100004100000000001004390000800501000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f00000001022001900000040f0000613d000000000101043b000000000101004b0000040f0000613d000000400300043d0000002401300039000000400200003900000000002104350000058e0100004100000000001304350000000401300039000000030200002900000000002104350000000901000029000000000101043300000044023000390000000000120435000800000003001d0000006402300039000000000301004b00000a610000613d000000000300001900000009040000290000002004400039000900000004001d0000000004040433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b00000a550000413d000000080400002900000000014200490000056302000041000005630340009c000000000302001900000000030440190000004003300210000005630410009c00000000010280190000006001100210000000000131019f0000000003000414000005630430009c0000000002034019000000c002200210000000000121019f0000800502000039158615710000040f00000000030100190000006003300270000105630030019d00000563043001970004000000010355000000010220019000000ac20000613d0000000801000029000005750110009c000003fc0000213d000007fe0000013d0000001f0430018f000000050230027200000a890000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000a820000413d000000000504004b00000a970000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000000242034f00000000033500490000087e0000013d000000400200043d0000001f0340018f000000050440027200000aa90000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000aa10000413d000000000503004b00000ab80000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f000000050440027200000acf0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000ac70000413d000000000503004b00000ade0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000001f031000390000057404000041000000000523004b0000000005000019000000000504401900000574062001970000057403300197000000000763004b000000000400a019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b00000b010000613d0000000303100367000000000303043b000005750430009c00000b010000213d00000020011000390000000004310019000000000224004b00000b010000213d0000000002030019000000000001042d000000000100001900001588000104300003000000000002000300000002001d00000000080004140000000302000367000000000605004b00000b160000613d00000563064001970000000007450019000000000457004b00000000040000190000000104004039000000010440019000000b9e0000c13d0000000004000031000000000574004b00000b9e0000413d000000000262034f000000000574004900000b170000013d0000000005000031000100000001001d000200000003001d000005870480009c00000ba40000813d000005630350019700000000023203df000000c0018002100000058801100197000005b2011001c700000000011203af00008010020000391586157b0000040f00000000030100190000006003300270000105630030019d00000563033001970004000000010355000000010220019000000bb60000613d0000003f013000390000058a02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000005750520009c00000b960000213d000000010440019000000b960000c13d000000400020043f00000000023104360000001f04300039000000050440027200000b450000613d00000000050000310000000305500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000b3d0000413d000000000400004b00000b470000613d0000000104000031000000000443004b00000b9c0000213d00000004050003670000001f0430018f000000050330027200000b570000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000b4f0000413d000000000604004b00000b660000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c0000000204000029000000010500002900000bd10000c13d0000000002020433000000400100043d000000a0031000390000000000230435000000800210003900000003030000290000000000320435000000600210003900000000004204350000057602500197000000400310003900000000002304350000002002100039000005b4030000410000000000320435000000a0030000390000000000310435000005b50310009c00000b960000213d000000c003100039000000400030043f0000056303000041000005630420009c000000000203801900000040022002100000000001010433000005630410009c00000000010380190000006001100210000000000121019f0000000002000414000005630420009c0000000002038019000000c002200210000000000112019f00000594011001c70000801002000039158615760000040f000000010220019000000b9c0000613d000000000101043b0000057601100197000000000001042d000005a70100004100000000001004350000004101000039000000040010043f0000058c01000041000015880001043000000000010000190000158800010430000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000001f0430018f000000050230027200000bc10000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000bba0000413d000000000504004b00000bcf0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000400100043d0000004402100039000005b303000041000000000032043500000024021000390000001f030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c70000158800010430000000400300043d0000006004300039000000000024043500000576011001970000004002300039000000000012043500000060010000390000000001130436000005b6020000410000000000210435000005b70230009c00000c070000813d0000008002300039000000400020043f0000056302000041000005630410009c000000000102801900000040011002100000000003030433000005630430009c00000000030280190000006003300210000000000113019f0000000003000414000005630430009c0000000002034019000000c002200210000000000112019f00000594011001c70000801002000039158615760000040f000000010220019000000c0d0000613d000000000101043b0000057601100197000000000001042d000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000000000100001900001588000104300008000000000002000700000001001d000000000101004b00000f080000613d000100000003001d000400000004001d000000400400043d000300000002001d00000576022001970000ffff0120008c00000f1a0000a13d000005b80100004100000000001404350000000401400039000800000002001d000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039000600000002001d000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000c400000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000c380000413d000000000705004b00000c4f0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000f2e0000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005750240009c00000ef60000213d000000010110019000000ef60000c13d000000400040043f0000001f0130008c00000ef40000a13d00000000010a0433000000000101004b000000040140003900000f540000c13d000005ba0200004100000000002404350000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800302000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000c880000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000c800000413d000000000705004b00000c970000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000f640000613d0000001f01400039000000600110018f0000000004a10019000005750140009c00000ef60000213d000000400040043f000000200130008c00000ef40000413d00000000010a0433000000000101004b00000f8a0000c13d0000057a01000041000000000014043500000004014000390000000702000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800402000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000ccb0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000cc30000413d000000000705004b00000cda0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000f9b0000613d0000001f01400039000000600110018f0000000004a10019000005750140009c00000ef60000213d000000400040043f000000200130008c00000ef40000413d00000000010a0433000000000101004b00000fc10000613d0000058d0140009c00000ef60000213d0000004001400039000000400010043f0000000001040436000200000001001d000000000001043500000008010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039000500000004001d158615760000040f0000000503000029000000010220019000000ef40000613d000000000101043b0000000002030433000000020320008c00000efc0000813d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000002020000290000000002020433000000010320008c00000efc0000213d000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b00000000010004160000057e020000410000000000200439000000000101004b00000d840000613d0000800a01000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039000500000002001d158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d00000580010000410000000000140435000000440140003900000000020004160000000000210435000000240140003900000008020000290000000000210435000000000100041000000576011001970000000402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000200000004001d00000000010440190000004001100210000000c002200210000000000112019f00000581011001c70000800a02000039158615710000040f00000000030100190000006003300270000105630030019d0000056304300197000400000001035500000001022001900000104b0000613d0000000202000029000005750120009c00000ef60000213d000000400020043f0000057e0100004100000000001004390000000502000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000010710000613d0000000502000029000005750120009c00000ef60000213d000000400020043f00000000010004160000058601100197000000000001041700000db50000013d0000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000010970000613d0000000502000029000005750120009c00000ef60000213d000000400020043f000000000100041400000003020003670000000404000029000000000304004b00000dc90000613d0000000005040019000000010300002900000563043001970000000003350019000000000553004b00000000050000190000000105004039000000010550019000000f020000c13d0000000005000031000000000635004b00000f020000413d000000000242034f000000000335004900000dca0000013d0000000003000031000005870410009c00000fd20000813d0000000004000411000005630330019700000000023203df000000c001100210000005880110019700000589011001c700000000011203af000200000004001d000005760d4001970000000302000029158615800000040f00000000030100190000006003300270000105630030019d00000563033001970004000000010355000000010220019000000fe40000613d0000003f013000390000058a01100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005750410009c00000ef60000213d000000010220019000000ef60000c13d000000400010043f000500000005001d00000000073504360000001f01300039000000050110027200000dfa0000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b00000df20000413d000000000100004b00000dfc0000613d0000000101000031000000000113004b00000ef40000213d00000004020003670000001f0130018f000000050330027200000e0c0000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b00000e040000413d000000000401004b00000e1b0000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f00000000001304350000057e0100004100000000001004390000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7000400000007001d158615760000040f000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400400043d0000058b01000041000000000014043500000004014000390000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d00000563043001970004000000010355000000010220019000000fff0000613d0000000609000029000005750190009c000000050100002900000ef60000213d000000400090043f00000000010104330000057402000041000000200310008c000000000300001900000000030240190000057404100197000000000504004b000000000200a019000005740440009c000000000203c019000000000202004b000000040400002900000ef40000c13d0000000002040433000005750320009c00000ef40000213d000000000141001900000000024200190000001f032000390000057404000041000000000513004b0000000005000019000000000504801900000574033001970000057406100197000000000763004b0000000004008019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b00000ef40000c13d0000000023020434000005750430009c00000ef60000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005750540009c00000ef60000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b00000ef40000213d000000000432004b00000e9a0000813d000000000409001900000000052100490000057406000041000000400750008c000000000700001900000000070640190000057405500197000000000805004b000000000600a019000005740550009c00000000050700190000000005066019000000000505004b00000ef40000c13d000000400500043d0000058d0650009c00000ef60000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b00000e7f0000413d0000057e0100004100000000001004390000800501000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f0000000606000029000000010220019000000ef40000613d000000000101043b000000000101004b00000ef40000613d000000400700043d0000002401700039000000400200003900000000002104350000058e0100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b00000ec60000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b00000ebc0000413d00000000017200490000056302000041000005630370009c000000000302001900000000030740190000004003300210000005630410009c00000000010280190000006001100210000000000131019f0000000003000414000005630430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000010250000613d0000000602000029000005750120009c000000000102001900000ef60000213d000000400010043f00000563010000410000000002000414000005630320009c0000000001024019000000c00110021000000594011001c70000800d0200003900000004030000390000059504000041000000020500002900000007060000290000000807000029158615710000040f000000010120019000000ef40000613d000000000001042d00000000010000190000158800010430000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000002101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000000400100043d0000004402100039000005be03000041000000000032043500000024021000390000001b030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000006401400039000005bc0200004100000000002104350000004401400039000005bd020000410000000000210435000000240140003900000028020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000592011001c70000158800010430000000400200043d0000001f0430018f000000050330027200000f3b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000f330000413d000000000504004b00000f4a0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004402400039000005b903000041000000000032043500000024024000390000001503000039000000000032043500000577020000410000000000240435000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f000000050330027200000f710000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000f690000413d000000000504004b00000f800000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004401400039000005bb020000410000000000210435000000240140003900000013020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f000000050330027200000fa80000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000fa00000413d000000000504004b00000fb70000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000044014000390000059602000041000000000021043500000024014000390000001a020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000001f0430018f000000050230027200000fef0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000fe80000413d000000000504004b00000ffd0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000400200043d0000001f0340018f00000005044002720000100c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000010040000413d000000000503004b0000101b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000010320000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000102a0000413d000000000503004b000010410000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000010580000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000010500000413d000000000503004b000010670000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f00000005044002720000107e0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000010760000413d000000000503004b0000108d0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000010a40000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000109c0000413d000000000503004b000010b30000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300008000000000002000300000005001d000700000001001d000000000101004b000013bc0000613d000400000003001d000100000004001d000000400400043d000200000002001d00000576022001970000ffff0120008c000013ce0000a13d000005b80100004100000000001404350000000401400039000800000002001d000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039000600000002001d000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000010ef0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000010e70000413d000000000705004b000010fe0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000013e20000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005750240009c000013aa0000213d0000000101100190000013aa0000c13d000000400040043f0000001f0130008c000013a80000a13d00000000010a0433000000000101004b000014080000c13d000005ba01000041000000000014043500000004014000390000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800302000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000011370000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000112f0000413d000000000705004b000011460000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000014190000613d0000001f01400039000000600110018f0000000004a10019000005750140009c000013aa0000213d000000400040043f000000200130008c000013a80000413d00000000010a0433000000000101004b00000004014000390000143f0000c13d0000057a0200004100000000002404350000000702000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800402000039000500000004001d158615760000040f000000050a000029000000000301001900000060033002700000056303300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000117a0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000011720000413d000000000705004b000011890000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000144f0000613d0000001f01400039000000600110018f0000000004a10019000005750140009c000013aa0000213d000000400040043f000000200130008c000013a80000413d00000000010a0433000000000101004b000014750000613d0000058d0140009c000013aa0000213d0000004001400039000000400010043f000000000304043600000000000304350000000402000029000000020120008c000013b00000813d0000000000240435000400000003001d000000000003043500000008010000290000000000100435000000200000043f00000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057c011001c70000801002000039000500000004001d158615760000040f00000005030000290000000102200190000013a80000613d000000000101043b0000000002030433000000010320008c0000000405000029000013b00000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000013b00000213d000000000301041a0000057d04000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b00000000010004160000057e020000410000000000200439000000000101004b000012380000613d0000800a01000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039000500000002001d158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d00000580010000410000000000140435000000440140003900000000020004160000000000210435000000240140003900000008020000290000000000210435000000000100041000000576011001970000000402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000400000004001d00000000010440190000004001100210000000c002200210000000000112019f00000581011001c70000800a02000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000014ff0000613d0000000402000029000005750120009c000013aa0000213d000000400020043f0000057e0100004100000000001004390000000502000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000015250000613d0000000502000029000005750120009c000013aa0000213d000000400020043f000000000100041600000586011001970000000000010417000012690000013d0000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d000005820100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005830110019700000584011001c70000002402400039000000000012043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f00000585011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d0000056304300197000400000001035500000001022001900000154b0000613d0000000502000029000005750120009c000013aa0000213d000000400020043f000000000100041400000003020003670000000304000029000000000304004b0000127d0000613d0000000005040019000000010300002900000563043001970000000003350019000000000553004b000000000500001900000001050040390000000105500190000013b60000c13d0000000005000031000000000635004b000013b60000413d000000000242034f00000000033500490000127e0000013d0000000003000031000005870410009c000014860000813d0000000004000411000005630330019700000000023203df000000c001100210000005880110019700000589011001c700000000011203af000300000004001d000005760d4001970000000202000029158615800000040f00000000030100190000006003300270000105630030019d000005630330019700040000000103550000000102200190000014980000613d0000003f013000390000058a01100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005750410009c000013aa0000213d0000000102200190000013aa0000c13d000000400010043f000500000005001d00000000073504360000001f013000390000000501100272000012ae0000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b000012a60000413d000000000100004b000012b00000613d0000000101000031000000000113004b000013a80000213d00000004020003670000001f0130018f0000000503300272000012c00000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000012b80000413d000000000401004b000012cf0000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f00000000001304350000057e0100004100000000001004390000000602000029000000040020044300000563010000410000000004000414000005630340009c0000000001044019000000c0011002100000057f011001c7000400000007001d158615760000040f0000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400400043d0000058b01000041000000000014043500000004014000390000000802000029000000000021043500000563010000410000000002000414000005630320009c0000000002018019000005630340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f0000058c011001c70000800202000039158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000014b30000613d0000000609000029000005750190009c0000000501000029000013aa0000213d000000400090043f00000000010104330000057402000041000000200310008c000000000300001900000000030240190000057404100197000000000504004b000000000200a019000005740440009c000000000203c019000000000202004b0000000404000029000013a80000c13d0000000002040433000005750320009c000013a80000213d000000000141001900000000024200190000001f032000390000057404000041000000000513004b0000000005000019000000000504801900000574033001970000057406100197000000000763004b0000000004008019000000000363013f000005740330009c00000000030500190000000003046019000000000303004b000013a80000c13d0000000023020434000005750430009c000013aa0000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005750540009c000013aa0000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b000013a80000213d000000000432004b0000134e0000813d000000000409001900000000052100490000057406000041000000400750008c000000000700001900000000070640190000057405500197000000000805004b000000000600a019000005740550009c00000000050700190000000005066019000000000505004b000013a80000c13d000000400500043d0000058d0650009c000013aa0000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b000013330000413d0000057e0100004100000000001004390000800501000039000000040010044300000563010000410000000002000414000005630320009c0000000001024019000000c0011002100000057f011001c70000800202000039158615760000040f00000006060000290000000102200190000013a80000613d000000000101043b000000000101004b000013a80000613d000000400700043d0000002401700039000000400200003900000000002104350000058e0100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b0000137a0000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b000013700000413d00000000017200490000056302000041000005630370009c000000000302001900000000030740190000004003300210000005630410009c00000000010280190000006001100210000000000131019f0000000003000414000005630430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d158615710000040f00000000030100190000006003300270000105630030019d000005630430019700040000000103550000000102200190000014d90000613d0000000602000029000005750120009c0000000001020019000013aa0000213d000000400010043f00000563010000410000000002000414000005630320009c0000000001024019000000c00110021000000594011001c70000800d0200003900000004030000390000059504000041000000030500002900000007060000290000000807000029158615710000040f0000000101200190000013a80000613d000000000001042d00000000010000190000158800010430000005a70100004100000000001004350000004101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000002101000039000000040010043f0000058c010000410000158800010430000005a70100004100000000001004350000001101000039000000040010043f0000058c010000410000158800010430000000400100043d0000004402100039000005be03000041000000000032043500000024021000390000001b030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000006401400039000005bc0200004100000000002104350000004401400039000005bd020000410000000000210435000000240140003900000028020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000592011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000013ef0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000013e70000413d000000000504004b000013fe0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004401400039000005b9020000410000000000210435000000240140003900000015020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f0000000503300272000014260000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000141e0000413d000000000504004b000014350000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f00001588000104300000004402400039000005bb03000041000000000032043500000024024000390000001303000039000000000032043500000577020000410000000000240435000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400200043d0000001f0430018f00000005033002720000145c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000014540000413d000000000504004b0000146b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000000044014000390000059602000041000000000021043500000024014000390000001a020000390000000000210435000005770100004100000000001404350000000401400039000000200200003900000000002104350000056301000041000005630240009c0000000001044019000000400110021000000581011001c70000158800010430000000400100043d00000044021000390000058f030000410000000000320435000000240210003900000008030000390000000000320435000005770200004100000000002104350000000402100039000000200300003900000000003204350000056302000041000005630310009c0000000001028019000000400110021000000581011001c700001588000104300000001f0430018f0000000502300272000014a30000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000149c0000413d000000000504004b000014b10000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000158800010430000000400200043d0000001f0340018f0000000504400272000014c00000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000014b80000413d000000000503004b000014cf0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000014e60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000014de0000413d000000000503004b000014f50000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f00000005044002720000150c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000015040000413d000000000503004b0000151b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000015320000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000152a0000413d000000000503004b000015410000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f0000158800010430000000400200043d0000001f0340018f0000000504400272000015580000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000015500000413d000000000503004b000015670000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000563010000410000000103000031000005630430009c0000000003018019000005630420009c000000000102401900000040011002100000006002300210000000000112019f000015880001043000001574002104210000000102000039000000000001042d0000000002000019000000000001042d00001579002104230000000102000039000000000001042d0000000002000019000000000001042d0000157e002104230000000102000039000000000001042d0000000002000019000000000001042d000000000f0d001900001584002104290000000102000039000000000001042d0000000002000019000000000001042d0000158600000432000015870001042e000015880001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009c4d535a00000000000000000000000000000000000000000000000000000000ec8067c600000000000000000000000000000000000000000000000000000000ec8067c700000000000000000000000000000000000000000000000000000000ecf95b8a00000000000000000000000000000000000000000000000000000000f3385fb6000000000000000000000000000000000000000000000000000000009c4d535b00000000000000000000000000000000000000000000000000000000bb0fd61000000000000000000000000000000000000000000000000000000000e9f18c17000000000000000000000000000000000000000000000000000000005d3826ff000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000007b510fe80000000000000000000000000000000000000000000000000000000084da1fb400000000000000000000000000000000000000000000000000000000187598a5000000000000000000000000000000000000000000000000000000003cda335100000000000000000000000000000000000000000000000000000000571809818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792073656c66000000000000000000000000000000000000000000000000000000000000640000008000000000000000004c6314f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000200000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000579952fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0c2e4ff97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbfad7e232e000000000000000000000000000000000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000006e6f742063616c6c2074686520636f6e7374727563746f7200000000000000005468652076616c7565206d757374206265207a65726f20696620776520646f2000000000000000000000000000000000000000840000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e554686520636f64652068617368206973206e6f74206b6e6f776e0000000000000000000000000000000000000000000000000000000000000000000000010000306395c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000696e6700000000000000000000000000000000000000000000000000000000006f6d2073657175656e7469616c20746f20617262697472617279206f726465724974206973206f6e6c7920706f737369626c6520746f206368616e676520667200000000000000000000000000000000000000a40000000000000000000000000200000000000000000000000000000000000020000000000000000000000000c7544194dab38b1652f35439b9b4806d8b71e113f2cf5c1351cb2ecf7c83959a43616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c4f594552206f7220434f4d504c45585f55504752414445525f434f4e54524143540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4000000800000000000000000f3385fb60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffefb00000000000000000000000000000000000001040000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000006d656e74730000000000000000000000000000000000000000000000000000002074686520636f6d62696e6564206076616c75656073206f66206465706c6f796076616c7565602070726f7669646564206973206e6f7420657175616c20746f4de2e46800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000400000000000000000000000003fb6f4f15ddd4a75588ca934894ad2cdcab25a5012e2515e1783433d0128611a63616c6c20666c6167000000000000000000000000000000000000000000000054686973206d6574686f64207265717569726573207468652073797374656d20000000000000000000000000000000000000008400000080000000000000000000000001000000000000000000000000000000000000000000000000000000006b656363616b3235362072657475726e656420696e76616c69642064617461002020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494000000000000000000000000000000000000000000000000ffffffffffffff3f63bae3a9951d38e8a3fbb7b70909afc1200610fc5bc55ade242f815974674f23000000000000000000000000000000000000000000000000ffffffffffffff80e03fe17700000000000000000000000000000000000000000000000000000000436f64652068617368206973206e6f6e2d7a65726f00000000000000000000005aa9b6b5000000000000000000000000000000000000000000000000000000004163636f756e74206973206f6363757069656400000000000000000000000000656c20737061636500000000000000000000000000000000000000000000000043616e206e6f74206465706c6f7920636f6e74726163747320696e206b65726e42797465636f6465486173682063616e6e6f74206265207a65726f00000000000000000000000000000000000000000000000000000000000000000000000000252a256aeded553d68a8c245babf3e3cb04d83822f59f4b27ba51b68faca9264", + "bytecode": "0x0005000000000002000900000000000200000000030100190000006003300270000005a80430019700040000004103550003000000010355000005a80030019d000200000002001f000100000000001f0000008001000039000000400010043f00000001012001900000009b0000c13d0000000002000031000000040120008c0000048b0000413d0000000301000367000000000301043b000000e003300270000005aa0430009c000000a30000a13d000005ab0430009c000000dd0000a13d000005ac0430009c000001750000213d000005af0430009c000001f20000613d000005b00130009c0000048b0000c13d0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000048b0000213d0000000002000411000000020100003900000002011001880000003b0000c13d0000ffff0120008c000000c80000213d000800000002001d0000000000200435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000400400043d000005ca0240009c000004c00000213d000000000101043b0000004002400039000000400020043f000000000101041a000000ff0210018f000000010320008c000007e80000213d00000000032404360000000801100270000000ff0110018f000000010210008c000007e80000213d000600000004001d000700000003001d00000000001304350000000902000029000000010220008c000007ee0000c13d000000000101004b000007ee0000c13d00000001020000390000000701000029000900000002001d00000000002104350000000801000029000005bd011001970000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000000101043b00000006020000290000000002020433000000010320008c0000000705000029000007e80000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000007e80000213d000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000400100043d00000009020000290000000000210435000005a8020000410000000003000414000005a80430009c0000000003028019000005a80410009c00000000010280190000004001100210000000c002300210000000000112019f000005cf011001c70000800d020000390000000203000039000005d0040000410000000805000029169a16850000040f0000000101200190000004ed0000c13d0000048b0000013d0000000001000416000000000101004b0000048b0000c13d000000200100003900000100001004430000012000000443000005a9010000410000169b0001042e000005b40430009c0000013d0000213d000005b80430009c000003350000613d000005b90430009c000003570000613d000005ba0130009c0000048b0000c13d0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000048b0000213d000000000200041100000002010000390000000201100188000004c60000c13d000005c70120009c000004c60000413d000000400100043d0000006402100039000005ec0300004100000000003204350000004402100039000005ed030000410000000000320435000000240210003900000024030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005e3011001c70000169c00010430000005b10430009c000002270000613d000005b20430009c000003e10000613d000005b30330009c0000048b0000c13d000000040220008a000005bb03000041000000200420008c00000000040000190000000004034019000005bb02200197000000000502004b000000000300a019000005bb0220009c00000000020400190000000002036019000000000202004b0000048b0000c13d0000000401100370000000000201043b0000000001000411000080070110008c0000048d0000c13d000005c101000041000000800010043f000900000002001d000000840020043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800402000039169a168a0000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001130000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000010b0000413d000000000705004b000001220000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000004970000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200330008c0000048b0000413d000000800300043d000000000303004b0000052d0000c13d000005be03000041000000000031043500000084032001bf00000020040000390000000000430435000000c403200039000005c5040000410000000000430435000000a4022000390000001a0300003900000000003204350000004001100210000005c6011001c70000169c00010430000005b50430009c000004280000613d000005b60130009c000004750000613d000005b70130009c0000048b0000c13d0000000001000416000000000101004b0000048b0000c13d0000000002000031000000040120008a000005bb03000041000000800410008c00000000040000190000000004034019000005bb01100197000000000501004b000000000300a019000005bb0110009c00000000010400190000000001036019000000000101004b0000048b0000c13d00000003010003670000000403100370000000000303043b000900000003001d000005bd0330009c0000048b0000213d0000006401100370000000000101043b000005bc0310009c0000048b0000213d0000000401100039169a09060000040f00000003040003670000004403400370000000000303043b0000002404400370000000000404043b000000000501001900000000060200190000000901000029000000000204001900000000040500190000000005060019169a09210000040f000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000005ad0430009c000002ab0000613d000005ae0330009c0000048b0000c13d000000040320008a000005bb04000041000000400530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000000403100370000000000303043b000900000003001d000005bc0330009c0000048b0000213d00000009030000290000000002320049000800000002001d000000040220008a000005bb03000041000000a00420008c00000000040000190000000004034019000005bb02200197000000000502004b000000000300a019000005bb0220009c00000000020400190000000002036019000000000202004b0000048b0000c13d0000002402100370000000000202043b000700000002001d000005bd0220009c0000048b0000213d00000000020004100000000003000411000000000223004b000005720000c13d00000009020000290000000402200039000000000121034f000000000201043b000005c101000041000000800010043f000600000002001d000000840020043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800402000039169a168a0000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001c60000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000001be0000413d000000000705004b000001d50000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000067f0000613d0000001f01400039000000600110018f00000080021001bf000500000002001d000000400020043f000000200230008c0000048b0000413d000000800200043d000000000202004b000007bf0000c13d000005be020000410000000504000029000000000024043500000084021001bf00000020030000390000000000320435000000c402100039000005c5030000410000000000320435000000a4011000390000001a0200003900000000002104350000004001400210000005c6011001c70000169c00010430000000040320008a000005bb04000041000000200530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000000403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000441034f000000000e04043b000005bc04e0009c0000048b0000213d000000240f3000390000000504e002100000000004f40019000000000424004b0000048b0000213d000000090500008a0000000004000411000000000554016f000080070550008c0000051f0000c13d00000000050e004b0000057c0000c13d0000000001000416000000000101004b000004ed0000613d000007550000013d000000040320008a000005bb04000041000000600530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000141034f000000000101043b000800000001001d000005bc0110009c0000048b0000213d00000024033000390000000801000029000700000003001d0000000001310019000000000121004b0000048b0000213d0000000201000039000000020110018800000001011002700000025e0000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000004690000613d000005c801000041000000800010043f0000000001000411000600000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000027f0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000002770000413d000000000705004b0000028e0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006a50000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d000000800200043d0000000601000029169a09fc0000040f0000000002010019000600000002001d000000090100002900000007030000290000000804000029169a0a320000040f0000000601000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000040320008a000005bb04000041000000800530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000441034f000000000404043b000800000004001d000005bc0440009c0000048b0000213d00000024043000390000000803000029000700000004001d0000000003430019000000000223004b0000048b0000213d0000006401100370000000000101043b000600000001001d000000010110008c0000048b0000213d000000020100003900000002011001880000000101100270000002e70000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000004690000613d000005c801000041000000800010043f0000000001000411000500000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003080000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003000000413d000000000705004b000003170000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000076d0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d000000800200043d0000000501000029169a09fc0000040f0000000002010019000500000002001d0000000901000029000000060300002900000007040000290000000805000029169a0eda0000040f0000000501000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000400310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000003020003670000000401200370000000000101043b000005bd0310009c0000048b0000213d0000002402200370000000000202043b169a09fc0000040f000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000040320008a000005bb04000041000000600530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000141034f000000000101043b000700000001001d000005bc0110009c0000048b0000213d00000024033000390000000701000029000600000003001d0000000001310019000000000121004b0000048b0000213d000000020100003900000002011001880000000101100270000003910000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000004690000613d000005c801000041000000800010043f0000000001000411000500000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b20000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003aa0000413d000000000705004b000003c10000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006cb0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d00000005010000290000000902000029000000080300002900000006040000290000000705000029169a09210000040f0000000002010019000800000002001d000000090100002900000006030000290000000704000029169a0a320000040f0000000801000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000900000001001d000005bd0110009c0000048b0000213d00000009010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000400200043d000005ca0320009c000004c00000213d000000000101043b0000004003200039000000400030043f000000000101041a000000ff0310018f000000010430008c000007e80000213d00000000033204360000000801100270000000ff0110018f000000010410008c000007e80000213d00000000001304350000000002020433000000010120008c000007e80000213d0000000101000039000000000202004b000004200000c13d0000000901000029000005e70110019800000000010000190000082c0000c13d000000010110018f000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000040320008a000005bb04000041000000800530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000441034f000000000404043b000700000004001d000005bc0440009c0000048b0000213d00000024043000390000000703000029000600000004001d0000000003430019000000000223004b0000048b0000213d0000006401100370000000000101043b000500000001001d000000010110008c0000048b0000213d000000020100003900000002011001880000000101100270000004670000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000006f10000c13d000005be01000041000000800010043f0000002001000039000000840010043f0000002401000039000000a40010043f000005ed01000041000000c40010043f000005ec01000041000000e40010043f000005ee010000410000169c000104300000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000005bd0210009c000004bd0000a13d00000000010000190000169c00010430000005be01000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f000005e001000041000000c40010043f000005c0010000410000169c00010430000000400200043d0000001f0430018f0000000503300272000004a40000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000049c0000413d000000000504004b000004b30000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d000005e90320009c000004ef0000413d000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000800000002001d0000000000200435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000000101043b000000000201041a000001000300008a000000000232016f0000000903000029000000000232019f000000000021041b000000400100043d0000000000310435000005a8020000410000000003000414000005a80430009c0000000003028019000005a80410009c00000000010280190000004001100210000000c002300210000000000112019f000005cf011001c70000800d020000390000000203000039000005eb040000410000000805000029169a16850000040f00000001012001900000048b0000613d00000000010000190000169b0001042e0000004003200039000000400030043f0000002003200039000000000003043500000000000204350000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000400200043d000005ca0320009c000004c00000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f000000020410008c000007e80000813d00000000011204360000000803300270000000ff0330018f000000010430008c000007e80000213d00000000003104350000000003020433000000010230008c000007e80000213d000000400200043d00000000033204360000000001010433000000010410008c000007e80000213d0000000000130435000005a801000041000005a80320009c00000000010240190000004001100210000005ea011001c70000169b0001042e000005be01000041000000800010043f0000002001000039000000840010043f0000004101000039000000a40010043f000005d101000041000000c40010043f000005d201000041000000e40010043f000005d301000041000001040010043f000005d4010000410000169c000104300000000001000416000000000101004b000007400000c13d000005d501000041000000000010043900008002020000390000000400200443000005a8010000410000000003000414000005a80430009c0000000001034019000000c001100210000005d6011001c7169a168a0000040f00000001022001900000048b0000613d000000000101043b000000000101004b0000048b0000613d000000400400043d000000240140003900000009020000290000000000210435000005e4010000410000000000140435000000040140003900008010020000390000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000800000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000008060000613d0000000801000029000005bc0110009c000004c00000213d0000000801000029000000400010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000080070500003900008010070000390000000906000029169a16850000040f0000000101200190000004ed0000c13d0000048b0000013d000005be01000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f000005bf01000041000000c40010043f000005c0010000410000169c0001043000000000053200490000008402300039000000c30550008a0000000007000019000000000600001900000005087002100000000008f80019000000000881034f000000000808043b000005bb09000041000000000a58004b000000000a000019000000000a098019000005bb0b500197000005bb0c800197000000000dbc004b0000000009008019000000000bbc013f000005bb0bb0009c00000000090ac019000000000909004b0000048b0000c13d0000000008820019000000000881034f000000000808043b0000000006680019000000000886004b000000000800001900000001080040390000000108800190000007b90000c13d00000001077000390000000008e7004b000005810000413d0000000001000416000000000161004b000007550000c13d000000c30100008a0000000001310049000200000001001d000005bd01400197000100000001001d000000000900001900050000000e001d00040000000f001d00000005019002100000000002f100190000000301000367000000000221034f000000000202043b00000002030000290000000003300031000005bb04000041000000000532004b00000000050000190000000005048019000005bb03300197000005bb06200197000000000736004b0000000004008019000000000336013f000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000000002f20019000800000002001d0000006002200039000700000002001d000000000121034f000000000101043b000300000001001d000005d50100004100000000001004390000000001000410000600000001001d0000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039000900000009001d169a168a0000040f000000080b0000290000000909000029000000040f000029000000050e00002900000001022001900000048b0000613d000000000101043b000000000101004b0000048b0000613d000000400a00043d000005d70100004100000000001a04350000000401a00039000000400200003900000000002104350000000301b00367000000000101043b0000004402a0003900000000001204350000002001b000390000000301100367000000000101043b000005bd0210009c0000048b0000213d0000006402a0003900000000001204350000004001b000390000000301100367000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b0000048b0000c13d0000008402a00039000000000012043500000007010000290000000301100367000000000101043b000000a402a00039000000000012043500000000020000310000000001b200490000008003b000390000001f0410008a0000000301000367000000000331034f000000000303043b000005bb05000041000000000643004b00000000060000190000000006058019000005bb04400197000005bb07300197000000000847004b0000000005008019000000000447013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000003b30019000000000131034f000000000101043b000005bc0410009c0000048b0000213d00000020033000390000000002120049000005bb04000041000000000523004b00000000050000190000000005042019000005bb02200197000005bb06300197000000000726004b0000000004008019000000000226013f000005bb0220009c00000000020500190000000002046019000000000202004b0000048b0000c13d000000c402a00039000000a0040000390000000000420435000000e402a0003900000000001204350000010402a0003900000003033003670000000504100272000006380000613d000000000500001900000005065002100000000007620019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000006300000413d0000001f05100190000006470000613d0000000504400210000000000343034f00000000044200190000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000340435000000000221001900000000000204350000002402a000390000000103000029000000000032043500000000020004140000000604000029000000040340008c000006780000613d0000001f01100039000000200300008a000000000131016f000005d803000041000005d80510009c0000000001038019000005a803000041000005a805a0009c00080000000a001d000000000503001900000000050a401900000040055002100000006001100210000000000151019f000005a80520009c0000000002038019000000c002200210000000000121019f000005d9011000410000000303000029000000000203004b0000066b0000613d000005da011001c700008009020000390000000005000019169a16850000040f0000066d0000013d0000000002040019169a16850000040f000400000001035500000000030100190000006003300270000105a80030019d000005a8043001970000000102200190000000050e000029000000040f0000290000000909000029000000080a000029000008e00000613d000005bc01a0009c000004c00000213d0000004000a0043f00000001099000390000000001e9004b000005a90000413d000004ed0000013d000000400200043d0000001f0430018f00000005033002720000068c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006840000413d000000000504004b0000069b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0430018f0000000503300272000006b20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006aa0000413d000000000504004b000006c10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0430018f0000000503300272000006d80000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006d00000413d000000000504004b000006e70000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000005c801000041000000800010043f0000000001000411000400000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000007100000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000007080000413d000000000705004b0000071f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000007930000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d00000004010000290000000902000029000000080300002900000006040000290000000705000029169a09210000040f0000000002010019000800000002001d0000000901000029000000050300002900000006040000290000000705000029169a0eda0000040f0000000801000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000400100043d0000006402100039000005e10300004100000000003204350000004402100039000005e2030000410000000000320435000000240210003900000038030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005e3011001c70000169c00010430000000400100043d0000008402100039000005dd0300004100000000003204350000006402100039000005de0300004100000000003204350000004402100039000005df030000410000000000320435000000240210003900000045030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005ce011001c70000169c00010430000000400200043d0000001f0430018f00000005033002720000077a0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007720000413d000000000504004b000007890000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0430018f0000000503300272000007a00000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007980000413d000000000504004b000007af0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000c002100039000000400020043f00000005020000290000000000020435000000a001100039000300000001001d0000000000010435000000090100002900000024011000390000000301100367000000000101043b000400000001001d000005bd0110009c0000048b0000213d00000004010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000000101043b00000005020000290000000002020433000000010320008c000007e80000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000003020000290000000002020433000000010320008c0000089e0000a13d000005db0100004100000000001004350000002101000039000000040010043f000005dc010000410000169c00010430000000400100043d0000008402100039000005cb0300004100000000003204350000006402100039000005cc0300004100000000003204350000004402100039000005cd030000410000000000320435000000240210003900000043030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005ce011001c70000169c00010430000000400200043d0000001f0340018f0000000504400272000008130000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000080b0000413d000000000503004b000008220000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400400043d000800000004001d000005e8010000410000000000140435000000040140003900000009020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a168a0000040f000000080a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000008520000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000084a0000413d00000000090a0019000000000705004b000008620000613d0000000506600210000000000761034f00000000066900190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000008780000613d0000001f01400039000000600210018f0000000001920019000000000221004b00000000020000190000000102004039000005bc0410009c000004c00000213d0000000102200190000004c00000c13d000000400010043f000000200130008c0000048b0000413d0000000001090433000000000101004b000000000100001900000001010060390000041f0000013d000000400200043d0000001f0430018f0000000503300272000008850000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000087d0000413d000000000504004b000008940000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000090100002900000084021000390000000301000367000000000221034f000000000202043b0000000803000029000000230330008a000005bb04000041000000000532004b00000000050000190000000005048019000005bb03300197000005bb06200197000000000736004b0000000004008019000000000336013f000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d000000090300002900000000023200190000000403200039000000000131034f000000000101043b000800000001001d000005bc0110009c0000048b0000213d000000080100002900000000011000790000002404200039000005bb02000041000000000314004b00000000030000190000000003022019000005bb01100197000500000004001d000005bb04400197000000000514004b0000000002008019000000000114013f000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000009010000290000004401100039169a0a280000040f000000000601001900000007010000290000000402000029000000060300002900000005040000290000000805000029169a13880000040f00000000010000190000169b0001042e000000400200043d0000001f0340018f0000000504400272000008ed0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008e50000413d000000000503004b000008fc0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000001f03100039000005bb04000041000000000523004b00000000050000190000000005044019000005bb06200197000005bb03300197000000000763004b000000000400a019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b0000091f0000613d0000000303100367000000000303043b000005bc0430009c0000091f0000213d00000020011000390000000004310019000000000224004b0000091f0000213d0000000002030019000000000001042d00000000010000190000169c00010430000300000000000200000000070004140000000008450019000000000558004b00000000050000190000000105004039000005a8044001970000000105500190000009af0000c13d0000000006000031000000000586004b000009af0000413d000200000002001d000300000001001d000100000003001d0000000304400367000005ef0570009c000009bd0000813d0000000002860049000005a80220019700000000022403df000000c001700210000005f001100197000005f1011001c700000000011203af0000801002000039169a168f0000040f00000000030100190000006003300270000105a80030019d000005a80330019700040000000103550000000102200190000009cf0000613d0000003f01300039000005f202100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000005bc0520009c000009b50000213d0000000104400190000009b50000c13d000000400020043f00000000023104360000001f0430003900000005044002720000095e0000613d00000000050000310000000305500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000009560000413d000000000400004b000009600000613d0000000104000031000000000443004b000009bb0000213d00000004050003670000001f0430018f0000000503300272000009700000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000009680000413d000000000604004b0000097f0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000003040000290000000205000029000009ea0000c13d0000000002020433000000400100043d000000a003100039000000000023043500000080021000390000000000520435000000600210003900000001030000290000000000320435000005bd02400197000000400310003900000000002304350000002002100039000005f4030000410000000000320435000000a0030000390000000000310435000005f50310009c000009b50000213d000000c003100039000000400030043f000005a803000041000005a80420009c000000000203801900000040022002100000000001010433000005a80410009c00000000010380190000006001100210000000000121019f0000000002000414000005a80420009c0000000002038019000000c002200210000000000112019f000005da011001c70000801002000039169a168a0000040f0000000102200190000009bb0000613d000000000101043b000005bd01100197000000000001042d000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c0001043000000000010000190000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f0000000502300272000009da0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000009d30000413d000000000504004b000009e80000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400100043d0000004402100039000005f303000041000000000032043500000024021000390000001f030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c00010430000000400300043d00000060043000390000000000240435000005bd011001970000004002300039000000000012043500000060010000390000000001130436000005f7020000410000000000210435000005f80230009c00000a200000813d0000008002300039000000400020043f000005a802000041000005a80410009c000000000102801900000040011002100000000003030433000005a80430009c00000000030280190000006003300210000000000113019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000112019f000005da011001c70000801002000039169a168a0000040f000000010220019000000a260000613d000000000101043b000005bd01100197000000000001042d000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c0001043000000000010000190000169c000104300000000301100367000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b00000a300000c13d000000000001042d00000000010000190000169c000104300008000000000002000700000001001d000000000101004b00000d250000613d000300000004001d000400000003001d000000400400043d000200000002001d000005bd022001970000ffff0120008c00000d370000a13d000005f90100004100000000001404350000000401400039000800000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039000600000002001d000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000a630000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000a5b0000413d000000000705004b00000a720000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000d4b0000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005bc0240009c00000d130000213d000000010110019000000d130000c13d000000400040043f0000001f0130008c00000d110000a13d00000000010a0433000000000101004b000000040140003900000d710000c13d000005fb02000041000000000024043500000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800302000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000aab0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000aa30000413d000000000705004b00000aba0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000d810000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c00000d130000213d000000400040043f000000200130008c00000d110000413d00000000010a0433000000000101004b00000da70000c13d000005c1010000410000000000140435000000040140003900000007020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800402000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000aee0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000ae60000413d000000000705004b00000afd0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000db80000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c00000d130000213d000000400040043f000000200130008c00000d110000413d00000000010a0433000000000101004b00000dde0000613d000005ca0140009c00000d130000213d0000004001400039000000400010043f0000000001040436000100000001001d000000000001043500000008010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039000500000004001d169a168a0000040f0000000503000029000000010220019000000d110000613d000000000101043b0000000002030433000000020320008c00000d190000813d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000001020000290000000002020433000000010320008c00000d190000213d000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b0000000001000416000005d5020000410000000000200439000000000101004b00000ba70000613d0000800a010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039000500000002001d169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d000005fd0100004100000000001404350000004401400039000000000200041600000000002104350000002401400039000000080200002900000000002104350000000001000410000005bd0110019700000004024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000100000004001d00000000010440190000004001100210000000c002200210000000000112019f000005c6011001c70000800a02000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e680000613d0000000102000029000005bc0120009c00000d130000213d000000400020043f000005d501000041000000000010043900000005020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e8e0000613d0000000502000029000005bc0120009c00000d130000213d000000400020043f00000000010004160000060101100197000000000001041700000bd80000013d00000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000eb40000613d0000000502000029000005bc0120009c00000d130000213d000000400020043f0000000001000414000000040400002900000003030000290000000002430019000000000332004b00000000030000190000000103004039000005a804400197000000010330019000000d1f0000c13d0000000003000031000000000523004b00000d1f0000413d0000000304400367000005ef0510009c00000def0000813d00000000050004110000000002230049000005a80220019700000000022403df000000c001100210000005f00110019700000602011001c700000000011203af000300000005001d000005bd0d5001970000000202000029169a16940000040f00000000030100190000006003300270000105a80030019d000005a8033001970004000000010355000000010220019000000e010000613d0000003f01300039000005f201100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005bc0410009c00000d130000213d000000010220019000000d130000c13d000000400010043f000500000005001d00000000073504360000001f01300039000000050110027200000c170000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b00000c0f0000413d000000000100004b00000c190000613d0000000101000031000000000113004b00000d110000213d00000004020003670000001f0130018f000000050330027200000c290000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b00000c210000413d000000000401004b00000c380000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000005d501000041000000000010043900000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7000400000007001d169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d00000603010000410000000000140435000000040140003900000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e1c0000613d0000000609000029000005bc0190009c000000050100002900000d130000213d000000400090043f0000000001010433000005bb02000041000000200310008c00000000030000190000000003024019000005bb04100197000000000504004b000000000200a019000005bb0440009c000000000203c019000000000202004b000000040400002900000d110000c13d0000000002040433000005bc0320009c00000d110000213d000000000141001900000000024200190000001f03200039000005bb04000041000000000513004b00000000050000190000000005048019000005bb03300197000005bb06100197000000000763004b0000000004008019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b00000d110000c13d0000000023020434000005bc0430009c00000d130000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005bc0540009c00000d130000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b00000d110000213d000000000432004b00000cb70000813d00000000040900190000000005210049000005bb06000041000000400750008c00000000070000190000000007064019000005bb05500197000000000805004b000000000600a019000005bb0550009c00000000050700190000000005066019000000000505004b00000d110000c13d000000400500043d000005ca0650009c00000d130000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b00000c9c0000413d000005d501000041000000000010043900008005010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f0000000606000029000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400700043d000000240170003900000040020000390000000000210435000006040100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b00000ce30000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b00000cd90000413d0000000001720049000005a802000041000005a80370009c000000000302001900000000030740190000004003300210000005a80410009c00000000010280190000006001100210000000000131019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e420000613d0000000602000029000005bc0120009c000000000102001900000d130000213d000000400010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000000030500002900000007060000290000000807000029169a16850000040f000000010120019000000d110000613d000000000001042d00000000010000190000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000002101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000400100043d00000044021000390000060703000041000000000032043500000024021000390000001b030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c00010430000000640140003900000605020000410000000000210435000000440140003900000606020000410000000000210435000000240140003900000028020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005e3011001c70000169c00010430000000400200043d0000001f0430018f000000050330027200000d580000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000d500000413d000000000504004b00000d670000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004402400039000005fa030000410000000000320435000000240240003900000015030000390000000000320435000005be02000041000000000024043500000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f000000050330027200000d8e0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000d860000413d000000000504004b00000d9d0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005fc020000410000000000210435000000240140003900000013020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f000000050330027200000dc50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000dbd0000413d000000000504004b00000dd40000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005c502000041000000000021043500000024014000390000001a020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f000000050230027200000e0c0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000e050000413d000000000504004b00000e1a0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400200043d0000001f0340018f000000050440027200000e290000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e210000413d000000000503004b00000e380000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000e4f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e470000413d000000000503004b00000e5e0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000e750000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e6d0000413d000000000503004b00000e840000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000e9b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e930000413d000000000503004b00000eaa0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000ec10000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000eb90000413d000000000503004b00000ed00000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300008000000000002000300000005001d000700000001001d000000000101004b000011d30000613d000400000003001d000200000004001d000000400400043d000100000002001d000005bd022001970000ffff0120008c000011e50000a13d000005f90100004100000000001404350000000401400039000800000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039000600000002001d000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000f0c0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000f040000413d000000000705004b00000f1b0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000011f90000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005bc0240009c000011c10000213d0000000101100190000011c10000c13d000000400040043f0000001f0130008c000011bf0000a13d00000000010a0433000000000101004b0000121f0000c13d000005fb010000410000000000140435000000040140003900000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800302000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000f540000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000f4c0000413d000000000705004b00000f630000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000012300000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c000011c10000213d000000400040043f000000200130008c000011bf0000413d00000000010a0433000000000101004b0000000401400039000012560000c13d000005c102000041000000000024043500000007020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800402000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000f970000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000f8f0000413d000000000705004b00000fa60000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000012660000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c000011c10000213d000000400040043f000000200130008c000011bf0000413d00000000010a0433000000000101004b0000128c0000613d000005ca0140009c000011c10000213d0000004001400039000000400010043f000000000304043600000000000304350000000402000029000000020120008c000011c70000813d0000000000240435000400000003001d000000000003043500000008010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039000500000004001d169a168a0000040f00000005030000290000000102200190000011bf0000613d000000000101043b0000000002030433000000010320008c0000000405000029000011c70000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000011c70000213d000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b0000000001000416000005d5020000410000000000200439000000000101004b000010550000613d0000800a010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039000500000002001d169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d000005fd0100004100000000001404350000004401400039000000000200041600000000002104350000002401400039000000080200002900000000002104350000000001000410000005bd0110019700000004024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000400000004001d00000000010440190000004001100210000000c002200210000000000112019f000005c6011001c70000800a02000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000013160000613d0000000402000029000005bc0120009c000011c10000213d000000400020043f000005d501000041000000000010043900000005020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a804300197000400000001035500000001022001900000133c0000613d0000000502000029000005bc0120009c000011c10000213d000000400020043f000000000100041600000601011001970000000000010417000010860000013d00000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000013620000613d0000000502000029000005bc0120009c000011c10000213d000000400020043f0000000001000414000000020400002900000003030000290000000002430019000000000332004b00000000030000190000000103004039000005a8044001970000000103300190000011cd0000c13d0000000003000031000000000523004b000011cd0000413d0000000304400367000005ef0510009c0000129d0000813d00000000050004110000000002230049000005a80220019700000000022403df000000c001100210000005f00110019700000602011001c700000000011203af000300000005001d000005bd0d5001970000000102000029169a16940000040f00000000030100190000006003300270000105a80030019d000005a80330019700040000000103550000000102200190000012af0000613d0000003f01300039000005f201100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005bc0410009c000011c10000213d0000000102200190000011c10000c13d000000400010043f000500000005001d00000000073504360000001f013000390000000501100272000010c50000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b000010bd0000413d000000000100004b000010c70000613d0000000101000031000000000113004b000011bf0000213d00000004020003670000001f0130018f0000000503300272000010d70000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000010cf0000413d000000000401004b000010e60000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000005d501000041000000000010043900000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7000400000007001d169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d00000603010000410000000000140435000000040140003900000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000012ca0000613d0000000609000029000005bc0190009c0000000501000029000011c10000213d000000400090043f0000000001010433000005bb02000041000000200310008c00000000030000190000000003024019000005bb04100197000000000504004b000000000200a019000005bb0440009c000000000203c019000000000202004b0000000404000029000011bf0000c13d0000000002040433000005bc0320009c000011bf0000213d000000000141001900000000024200190000001f03200039000005bb04000041000000000513004b00000000050000190000000005048019000005bb03300197000005bb06100197000000000763004b0000000004008019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b000011bf0000c13d0000000023020434000005bc0430009c000011c10000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005bc0540009c000011c10000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b000011bf0000213d000000000432004b000011650000813d00000000040900190000000005210049000005bb06000041000000400750008c00000000070000190000000007064019000005bb05500197000000000805004b000000000600a019000005bb0550009c00000000050700190000000005066019000000000505004b000011bf0000c13d000000400500043d000005ca0650009c000011c10000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b0000114a0000413d000005d501000041000000000010043900008005010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f00000006060000290000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400700043d000000240170003900000040020000390000000000210435000006040100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b000011910000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b000011870000413d0000000001720049000005a802000041000005a80370009c000000000302001900000000030740190000004003300210000005a80410009c00000000010280190000006001100210000000000131019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000012f00000613d0000000602000029000005bc0120009c0000000001020019000011c10000213d000000400010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000000030500002900000007060000290000000807000029169a16850000040f0000000101200190000011bf0000613d000000000001042d00000000010000190000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000002101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000400100043d00000044021000390000060703000041000000000032043500000024021000390000001b030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c00010430000000640140003900000605020000410000000000210435000000440140003900000606020000410000000000210435000000240140003900000028020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005e3011001c70000169c00010430000000400200043d0000001f0430018f0000000503300272000012060000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000011fe0000413d000000000504004b000012150000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005fa020000410000000000210435000000240140003900000015020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f00000005033002720000123d0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000012350000413d000000000504004b0000124c0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004402400039000005fc030000410000000000320435000000240240003900000013030000390000000000320435000005be02000041000000000024043500000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f0000000503300272000012730000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000126b0000413d000000000504004b000012820000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005c502000041000000000021043500000024014000390000001a020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f0000000502300272000012ba0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000012b30000413d000000000504004b000012c80000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400200043d0000001f0340018f0000000504400272000012d70000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000012cf0000413d000000000503004b000012e60000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000012fd0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000012f50000413d000000000503004b0000130c0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000013230000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000131b0000413d000000000503004b000013320000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000013490000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000013410000413d000000000503004b000013580000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f00000005044002720000136f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000013670000413d000000000503004b0000137e0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300009000000000002000500000005001d000700000003001d000800000002001d000600000001001d0000000002000416000000000106004b0000152f0000613d000300000004001d000400000002001d000000000102004b000013cb0000613d000005d50100004100000000001004390000800a010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400400043d000005fd0100004100000000001404350000004401400039000000000200041600000000002104350000000801000029000005bd01100197000000240240003900000000001204350000000001000410000005bd0110019700000004024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f000005c6011001c70000800a02000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000016240000613d0000000902000029000005bc0120009c000015790000213d000000400020043f000005d501000041000000000010043900008002020000390000000400200443000005a8010000410000000003000414000005a80430009c0000000001034019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d0000000701000029000005ff0110019700000600011001c7000000400400043d00000024024000390000000000120435000005fe0100004100000000001404350000000801000029000005bd021001970000000401400039000900000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000200000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039000100000002001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000015850000613d0000000202000029000005bc0120009c0000000401000029000015790000213d000000400020043f000000000101004b000014070000613d0000000001000416000006010110019700000000000104170000000001000414000000030400002900000005030000290000000002430019000000000332004b00000000030000190000000103004039000005a80440019700000001033001900000157f0000c13d0000000003000031000000000523004b0000157f0000413d0000000304400367000005ef0510009c000015ab0000813d0000000002230049000005a80220019700000000022403df000000c001100210000005f00110019700000602011001c700000000011203af0000000602000029000005bd0d200197000000080200002900080000000d001d169a16940000040f00000000030100190000006003300270000105a80030019d000005a80330019700040000000103550000000102200190000015bd0000613d0000003f01300039000005f201100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005bc0410009c000015790000213d0000000102200190000015790000c13d000000400010043f000500000005001d00000000073504360000001f013000390000000501100272000014460000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b0000143e0000413d000000000100004b000014480000613d0000000101000031000000000113004b000015770000213d00000004020003670000001f0130018f0000000503300272000014580000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000014500000413d000000000401004b000014670000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000005d501000041000000000010043900000001020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7000400000007001d169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400400043d00000603010000410000000000140435000000040140003900000009020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000015d80000613d0000000609000029000005bc0190009c0000000501000029000015790000213d000000400090043f0000000001010433000005bb02000041000000200310008c00000000030000190000000003024019000005bb04100197000000000504004b000000000200a019000005bb0440009c000000000203c019000000000202004b0000000404000029000015770000c13d0000000002040433000005bc0320009c000015770000213d000000000114001900000000024200190000001f03200039000005bb04000041000000000513004b00000000050000190000000005048019000005bb03300197000005bb06100197000000000763004b0000000004008019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b000015770000c13d0000000023020434000005bc0430009c000015790000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004490019000005bc0540009c000015790000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b000015770000213d000000000432004b000014e60000813d00000000040900190000000005210049000005bb06000041000000400750008c00000000070000190000000007064019000005bb05500197000000000805004b000000000600a019000005bb0550009c00000000050700190000000005066019000000000505004b000015770000c13d000000400500043d000005ca0650009c000015790000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b000014cb0000413d000005d501000041000000000010043900008005010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f00000006060000290000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400700043d000000240170003900000040020000390000000000210435000006040100004100000000001704350000000401700039000000090200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b000015120000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b000015080000413d0000000001720049000005a802000041000005a80370009c000000000302001900000000030740190000004003300210000005a80410009c00000000010280190000006001100210000000000131019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000121019f0000800502000039000500000007001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000015fe0000613d0000000502000029000005bc0120009c000015660000a13d000015790000013d000000000102004b0000164a0000c13d000005d501000041000000000010043900008002020000390000000400200443000005a8010000410000000003000414000005a80430009c0000000001034019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400400043d000000240140003900000007020000290000000000210435000005e40100004100000000001404350000000801000029000005bd021001970000000401400039000900000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a804300197000400000001035500000001022001900000165f0000613d0000000502000029000005bc0120009c000015790000213d0000000601000029000005bd01100197000800000001001d000000400020043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000000080500002900000007060000290000000907000029169a16850000040f0000000101200190000015770000613d000000000001042d00000000010000190000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000400200043d0000001f0340018f0000000504400272000015920000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000158a0000413d000000000503004b000015a10000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f0000000502300272000015c80000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000015c10000413d000000000504004b000015d60000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400200043d0000001f0340018f0000000504400272000015e50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000015dd0000413d000000000503004b000015f40000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f00000005044002720000160b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000016030000413d000000000503004b0000161a0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000016310000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000016290000413d000000000503004b000016400000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400100043d0000006402100039000005e10300004100000000003204350000004402100039000005e2030000410000000000320435000000240210003900000038030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005e3011001c70000169c00010430000000400200043d0000001f0340018f00000005044002720000166c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000016640000413d000000000503004b0000167b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c0001043000001688002104210000000102000039000000000001042d0000000002000019000000000001042d0000168d002104230000000102000039000000000001042d0000000002000019000000000001042d00001692002104230000000102000039000000000001042d0000000002000019000000000001042d000000000f0d001900001698002104290000000102000039000000000001042d0000000002000019000000000001042d0000169a000004320000169b0001042e0000169c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009c4d535a00000000000000000000000000000000000000000000000000000000e9f18c1600000000000000000000000000000000000000000000000000000000ecf95b8900000000000000000000000000000000000000000000000000000000ecf95b8a00000000000000000000000000000000000000000000000000000000f3385fb600000000000000000000000000000000000000000000000000000000e9f18c1700000000000000000000000000000000000000000000000000000000ec8067c7000000000000000000000000000000000000000000000000000000009c4d535b00000000000000000000000000000000000000000000000000000000bb0fd61000000000000000000000000000000000000000000000000000000000da37f07f000000000000000000000000000000000000000000000000000000005d3826ff000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000007b510fe80000000000000000000000000000000000000000000000000000000084da1fb400000000000000000000000000000000000000000000000000000000187598a5000000000000000000000000000000000000000000000000000000003cda335100000000000000000000000000000000000000000000000000000000571809818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792073656c66000000000000000000000000000000000000000000000000000000000000640000008000000000000000004c6314f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000200000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff54686520636f64652068617368206973206e6f74206b6e6f776e00000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000010000306395c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf696e6700000000000000000000000000000000000000000000000000000000006f6d2073657175656e7469616c20746f20617262697472617279206f726465724974206973206f6e6c7920706f737369626c6520746f206368616e676520667200000000000000000000000000000000000000a40000000000000000000000000200000000000000000000000000000000000020000000000000000000000000c7544194dab38b1652f35439b9b4806d8b71e113f2cf5c1351cb2ecf7c83959a43616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c4f594552206f7220434f4d504c45585f55504752414445525f434f4e54524143540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000f3385fb60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffefb000000000000000000000000000000000000010400000000000000000000000002000000000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006d656e74730000000000000000000000000000000000000000000000000000002074686520636f6d62696e6564206076616c75656073206f66206465706c6f796076616c7565602070726f7669646564206973206e6f7420657175616c20746f496e617070726f7072696174652063616c6c65720000000000000000000000006e6f742063616c6c2074686520636f6e7374727563746f7200000000000000005468652076616c7565206d757374206265207a65726f20696620776520646f2000000000000000000000000000000000000000840000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e5000000000000000000000000ffffffffffffffffffffffffffffffffffff00004de2e46800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000400000000000000000000000003fb6f4f15ddd4a75588ca934894ad2cdcab25a5012e2515e1783433d0128611a666c61670000000000000000000000000000000000000000000000000000000054686973206d6574686f6420726571756972652073797374656d2063616c6c200000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe06b656363616b3235362072657475726e656420696e76616c69642064617461002020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494000000000000000000000000000000000000000000000000ffffffffffffff3f4f766572666c6f7700000000000000000000000000000000000000000000000063bae3a9951d38e8a3fbb7b70909afc1200610fc5bc55ade242f815974674f23000000000000000000000000000000000000000000000000ffffffffffffff80e03fe17700000000000000000000000000000000000000000000000000000000436f64652068617368206973206e6f6e2d7a65726f00000000000000000000005aa9b6b5000000000000000000000000000000000000000000000000000000004163636f756e74206973206f6363757069656400000000000000000000000000579952fc000000000000000000000000000000000000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0001000100000000000000000000000000000000000000000000000000000000c2e4ff9700000000000000000000000000000000000000000000000000000000ad7e232e00000000000000000000000000000000000000000000000000000000656c20737061636500000000000000000000000000000000000000000000000043616e206e6f74206465706c6f7920636f6e74726163747320696e206b65726e42797465636f6465486173682063616e6e6f74206265207a65726f000000000039187a54c09fddd78293acb1d6fafb891fffc8438366fb93b8fe735877e8b717", + "deployedBytecode": "0x0005000000000002000900000000000200000000030100190000006003300270000005a80430019700040000004103550003000000010355000005a80030019d000200000002001f000100000000001f0000008001000039000000400010043f00000001012001900000009b0000c13d0000000002000031000000040120008c0000048b0000413d0000000301000367000000000301043b000000e003300270000005aa0430009c000000a30000a13d000005ab0430009c000000dd0000a13d000005ac0430009c000001750000213d000005af0430009c000001f20000613d000005b00130009c0000048b0000c13d0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000048b0000213d0000000002000411000000020100003900000002011001880000003b0000c13d0000ffff0120008c000000c80000213d000800000002001d0000000000200435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000400400043d000005ca0240009c000004c00000213d000000000101043b0000004002400039000000400020043f000000000101041a000000ff0210018f000000010320008c000007e80000213d00000000032404360000000801100270000000ff0110018f000000010210008c000007e80000213d000600000004001d000700000003001d00000000001304350000000902000029000000010220008c000007ee0000c13d000000000101004b000007ee0000c13d00000001020000390000000701000029000900000002001d00000000002104350000000801000029000005bd011001970000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000000101043b00000006020000290000000002020433000000010320008c0000000705000029000007e80000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000007e80000213d000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000400100043d00000009020000290000000000210435000005a8020000410000000003000414000005a80430009c0000000003028019000005a80410009c00000000010280190000004001100210000000c002300210000000000112019f000005cf011001c70000800d020000390000000203000039000005d0040000410000000805000029169a16850000040f0000000101200190000004ed0000c13d0000048b0000013d0000000001000416000000000101004b0000048b0000c13d000000200100003900000100001004430000012000000443000005a9010000410000169b0001042e000005b40430009c0000013d0000213d000005b80430009c000003350000613d000005b90430009c000003570000613d000005ba0130009c0000048b0000c13d0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000900000001001d000000010110008c0000048b0000213d000000000200041100000002010000390000000201100188000004c60000c13d000005c70120009c000004c60000413d000000400100043d0000006402100039000005ec0300004100000000003204350000004402100039000005ed030000410000000000320435000000240210003900000024030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005e3011001c70000169c00010430000005b10430009c000002270000613d000005b20430009c000003e10000613d000005b30330009c0000048b0000c13d000000040220008a000005bb03000041000000200420008c00000000040000190000000004034019000005bb02200197000000000502004b000000000300a019000005bb0220009c00000000020400190000000002036019000000000202004b0000048b0000c13d0000000401100370000000000201043b0000000001000411000080070110008c0000048d0000c13d000005c101000041000000800010043f000900000002001d000000840020043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800402000039169a168a0000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001130000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000010b0000413d000000000705004b000001220000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000004970000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200330008c0000048b0000413d000000800300043d000000000303004b0000052d0000c13d000005be03000041000000000031043500000084032001bf00000020040000390000000000430435000000c403200039000005c5040000410000000000430435000000a4022000390000001a0300003900000000003204350000004001100210000005c6011001c70000169c00010430000005b50430009c000004280000613d000005b60130009c000004750000613d000005b70130009c0000048b0000c13d0000000001000416000000000101004b0000048b0000c13d0000000002000031000000040120008a000005bb03000041000000800410008c00000000040000190000000004034019000005bb01100197000000000501004b000000000300a019000005bb0110009c00000000010400190000000001036019000000000101004b0000048b0000c13d00000003010003670000000403100370000000000303043b000900000003001d000005bd0330009c0000048b0000213d0000006401100370000000000101043b000005bc0310009c0000048b0000213d0000000401100039169a09060000040f00000003040003670000004403400370000000000303043b0000002404400370000000000404043b000000000501001900000000060200190000000901000029000000000204001900000000040500190000000005060019169a09210000040f000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000005ad0430009c000002ab0000613d000005ae0330009c0000048b0000c13d000000040320008a000005bb04000041000000400530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000000403100370000000000303043b000900000003001d000005bc0330009c0000048b0000213d00000009030000290000000002320049000800000002001d000000040220008a000005bb03000041000000a00420008c00000000040000190000000004034019000005bb02200197000000000502004b000000000300a019000005bb0220009c00000000020400190000000002036019000000000202004b0000048b0000c13d0000002402100370000000000202043b000700000002001d000005bd0220009c0000048b0000213d00000000020004100000000003000411000000000223004b000005720000c13d00000009020000290000000402200039000000000121034f000000000201043b000005c101000041000000800010043f000600000002001d000000840020043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800402000039169a168a0000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001c60000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000001be0000413d000000000705004b000001d50000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000067f0000613d0000001f01400039000000600110018f00000080021001bf000500000002001d000000400020043f000000200230008c0000048b0000413d000000800200043d000000000202004b000007bf0000c13d000005be020000410000000504000029000000000024043500000084021001bf00000020030000390000000000320435000000c402100039000005c5030000410000000000320435000000a4011000390000001a0200003900000000002104350000004001400210000005c6011001c70000169c00010430000000040320008a000005bb04000041000000200530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000000403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000441034f000000000e04043b000005bc04e0009c0000048b0000213d000000240f3000390000000504e002100000000004f40019000000000424004b0000048b0000213d000000090500008a0000000004000411000000000554016f000080070550008c0000051f0000c13d00000000050e004b0000057c0000c13d0000000001000416000000000101004b000004ed0000613d000007550000013d000000040320008a000005bb04000041000000600530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000141034f000000000101043b000800000001001d000005bc0110009c0000048b0000213d00000024033000390000000801000029000700000003001d0000000001310019000000000121004b0000048b0000213d0000000201000039000000020110018800000001011002700000025e0000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000004690000613d000005c801000041000000800010043f0000000001000411000600000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000027f0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000002770000413d000000000705004b0000028e0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006a50000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d000000800200043d0000000601000029169a09fc0000040f0000000002010019000600000002001d000000090100002900000007030000290000000804000029169a0a320000040f0000000601000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000040320008a000005bb04000041000000800530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000441034f000000000404043b000800000004001d000005bc0440009c0000048b0000213d00000024043000390000000803000029000700000004001d0000000003430019000000000223004b0000048b0000213d0000006401100370000000000101043b000600000001001d000000010110008c0000048b0000213d000000020100003900000002011001880000000101100270000002e70000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000004690000613d000005c801000041000000800010043f0000000001000411000500000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003080000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003000000413d000000000705004b000003170000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000400000001035500000001022001900000076d0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d000000800200043d0000000501000029169a09fc0000040f0000000002010019000500000002001d0000000901000029000000060300002900000007040000290000000805000029169a0eda0000040f0000000501000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000400310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000003020003670000000401200370000000000101043b000005bd0310009c0000048b0000213d0000002402200370000000000202043b169a09fc0000040f000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000040320008a000005bb04000041000000600530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000141034f000000000101043b000700000001001d000005bc0110009c0000048b0000213d00000024033000390000000701000029000600000003001d0000000001310019000000000121004b0000048b0000213d000000020100003900000002011001880000000101100270000003910000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000004690000613d000005c801000041000000800010043f0000000001000411000500000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b20000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003aa0000413d000000000705004b000003c10000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000006cb0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d00000005010000290000000902000029000000080300002900000006040000290000000705000029169a09210000040f0000000002010019000800000002001d000000090100002900000006030000290000000704000029169a0a320000040f0000000801000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e0000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000900000001001d000005bd0110009c0000048b0000213d00000009010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000400200043d000005ca0320009c000004c00000213d000000000101043b0000004003200039000000400030043f000000000101041a000000ff0310018f000000010430008c000007e80000213d00000000033204360000000801100270000000ff0110018f000000010410008c000007e80000213d00000000001304350000000002020433000000010120008c000007e80000213d0000000101000039000000000202004b000004200000c13d0000000901000029000005e70110019800000000010000190000082c0000c13d000000010110018f000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000040320008a000005bb04000041000000800530008c00000000050000190000000005044019000005bb03300197000000000603004b000000000400a019000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000002403100370000000000303043b000900000003001d0000000403100370000000000303043b000800000003001d0000004403100370000000000303043b000005bc0430009c0000048b0000213d0000002304300039000005bb05000041000000000624004b00000000060000190000000006058019000005bb07200197000005bb04400197000000000874004b0000000005008019000000000474013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000404300039000000000441034f000000000404043b000700000004001d000005bc0440009c0000048b0000213d00000024043000390000000703000029000600000004001d0000000003430019000000000223004b0000048b0000213d0000006401100370000000000101043b000500000001001d000000010110008c0000048b0000213d000000020100003900000002011001880000000101100270000004670000c13d0000000001000411000005c70110009c00000000010000190000000101004039000000000101004b000006f10000c13d000005be01000041000000800010043f0000002001000039000000840010043f0000002401000039000000a40010043f000005ed01000041000000c40010043f000005ec01000041000000e40010043f000005ee010000410000169c000104300000000001000416000000000101004b0000048b0000c13d000000040100008a0000000001100031000005bb02000041000000200310008c00000000030000190000000003024019000005bb01100197000000000401004b000000000200a019000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000004010000390000000301100367000000000101043b000005bd0210009c000004bd0000a13d00000000010000190000169c00010430000005be01000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f000005e001000041000000c40010043f000005c0010000410000169c00010430000000400200043d0000001f0430018f0000000503300272000004a40000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000049c0000413d000000000504004b000004b30000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d000005e90320009c000004ef0000413d000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000800000002001d0000000000200435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000000101043b000000000201041a000001000300008a000000000232016f0000000903000029000000000232019f000000000021041b000000400100043d0000000000310435000005a8020000410000000003000414000005a80430009c0000000003028019000005a80410009c00000000010280190000004001100210000000c002300210000000000112019f000005cf011001c70000800d020000390000000203000039000005eb040000410000000805000029169a16850000040f00000001012001900000048b0000613d00000000010000190000169b0001042e0000004003200039000000400030043f0000002003200039000000000003043500000000000204350000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000400200043d000005ca0320009c000004c00000213d000000000101043b0000004003200039000000400030043f000000000301041a000000ff0130018f000000020410008c000007e80000813d00000000011204360000000803300270000000ff0330018f000000010430008c000007e80000213d00000000003104350000000003020433000000010230008c000007e80000213d000000400200043d00000000033204360000000001010433000000010410008c000007e80000213d0000000000130435000005a801000041000005a80320009c00000000010240190000004001100210000005ea011001c70000169b0001042e000005be01000041000000800010043f0000002001000039000000840010043f0000004101000039000000a40010043f000005d101000041000000c40010043f000005d201000041000000e40010043f000005d301000041000001040010043f000005d4010000410000169c000104300000000001000416000000000101004b000007400000c13d000005d501000041000000000010043900008002020000390000000400200443000005a8010000410000000003000414000005a80430009c0000000001034019000000c001100210000005d6011001c7169a168a0000040f00000001022001900000048b0000613d000000000101043b000000000101004b0000048b0000613d000000400400043d000000240140003900000009020000290000000000210435000005e4010000410000000000140435000000040140003900008010020000390000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000800000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000008060000613d0000000801000029000005bc0110009c000004c00000213d0000000801000029000000400010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000080070500003900008010070000390000000906000029169a16850000040f0000000101200190000004ed0000c13d0000048b0000013d000005be01000041000000800010043f0000002001000039000000840010043f0000001501000039000000a40010043f000005bf01000041000000c40010043f000005c0010000410000169c0001043000000000053200490000008402300039000000c30550008a0000000007000019000000000600001900000005087002100000000008f80019000000000881034f000000000808043b000005bb09000041000000000a58004b000000000a000019000000000a098019000005bb0b500197000005bb0c800197000000000dbc004b0000000009008019000000000bbc013f000005bb0bb0009c00000000090ac019000000000909004b0000048b0000c13d0000000008820019000000000881034f000000000808043b0000000006680019000000000886004b000000000800001900000001080040390000000108800190000007b90000c13d00000001077000390000000008e7004b000005810000413d0000000001000416000000000161004b000007550000c13d000000c30100008a0000000001310049000200000001001d000005bd01400197000100000001001d000000000900001900050000000e001d00040000000f001d00000005019002100000000002f100190000000301000367000000000221034f000000000202043b00000002030000290000000003300031000005bb04000041000000000532004b00000000050000190000000005048019000005bb03300197000005bb06200197000000000736004b0000000004008019000000000336013f000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d0000000002f20019000800000002001d0000006002200039000700000002001d000000000121034f000000000101043b000300000001001d000005d50100004100000000001004390000000001000410000600000001001d0000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039000900000009001d169a168a0000040f000000080b0000290000000909000029000000040f000029000000050e00002900000001022001900000048b0000613d000000000101043b000000000101004b0000048b0000613d000000400a00043d000005d70100004100000000001a04350000000401a00039000000400200003900000000002104350000000301b00367000000000101043b0000004402a0003900000000001204350000002001b000390000000301100367000000000101043b000005bd0210009c0000048b0000213d0000006402a0003900000000001204350000004001b000390000000301100367000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b0000048b0000c13d0000008402a00039000000000012043500000007010000290000000301100367000000000101043b000000a402a00039000000000012043500000000020000310000000001b200490000008003b000390000001f0410008a0000000301000367000000000331034f000000000303043b000005bb05000041000000000643004b00000000060000190000000006058019000005bb04400197000005bb07300197000000000847004b0000000005008019000000000447013f000005bb0440009c00000000040600190000000004056019000000000404004b0000048b0000c13d0000000003b30019000000000131034f000000000101043b000005bc0410009c0000048b0000213d00000020033000390000000002120049000005bb04000041000000000523004b00000000050000190000000005042019000005bb02200197000005bb06300197000000000726004b0000000004008019000000000226013f000005bb0220009c00000000020500190000000002046019000000000202004b0000048b0000c13d000000c402a00039000000a0040000390000000000420435000000e402a0003900000000001204350000010402a0003900000003033003670000000504100272000006380000613d000000000500001900000005065002100000000007620019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b000006300000413d0000001f05100190000006470000613d0000000504400210000000000343034f00000000044200190000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000340435000000000221001900000000000204350000002402a000390000000103000029000000000032043500000000020004140000000604000029000000040340008c000006780000613d0000001f01100039000000200300008a000000000131016f000005d803000041000005d80510009c0000000001038019000005a803000041000005a805a0009c00080000000a001d000000000503001900000000050a401900000040055002100000006001100210000000000151019f000005a80520009c0000000002038019000000c002200210000000000121019f000005d9011000410000000303000029000000000203004b0000066b0000613d000005da011001c700008009020000390000000005000019169a16850000040f0000066d0000013d0000000002040019169a16850000040f000400000001035500000000030100190000006003300270000105a80030019d000005a8043001970000000102200190000000050e000029000000040f0000290000000909000029000000080a000029000008e00000613d000005bc01a0009c000004c00000213d0000004000a0043f00000001099000390000000001e9004b000005a90000413d000004ed0000013d000000400200043d0000001f0430018f00000005033002720000068c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006840000413d000000000504004b0000069b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0430018f0000000503300272000006b20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006aa0000413d000000000504004b000006c10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0430018f0000000503300272000006d80000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000006d00000413d000000000504004b000006e70000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000005c801000041000000800010043f0000000001000411000400000001001d000000840010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c2011001c70000800302000039169a16850000040f00000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000007100000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000007080000413d000000000705004b0000071f0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000007930000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200130008c0000048b0000413d00000004010000290000000902000029000000080300002900000006040000290000000705000029169a09210000040f0000000002010019000800000002001d0000000901000029000000050300002900000006040000290000000705000029169a0eda0000040f0000000801000029000005bd01100197000000400200043d0000000000120435000005a801000041000005a80320009c00000000010240190000004001100210000005c9011001c70000169b0001042e000000400100043d0000006402100039000005e10300004100000000003204350000004402100039000005e2030000410000000000320435000000240210003900000038030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005e3011001c70000169c00010430000000400100043d0000008402100039000005dd0300004100000000003204350000006402100039000005de0300004100000000003204350000004402100039000005df030000410000000000320435000000240210003900000045030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005ce011001c70000169c00010430000000400200043d0000001f0430018f00000005033002720000077a0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007720000413d000000000504004b000007890000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0430018f0000000503300272000007a00000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007980000413d000000000504004b000007af0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000c002100039000000400020043f00000005020000290000000000020435000000a001100039000300000001001d0000000000010435000000090100002900000024011000390000000301100367000000000101043b000400000001001d000005bd0110009c0000048b0000213d00000004010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039169a168a0000040f00000001022001900000048b0000613d000000000101043b00000005020000290000000002020433000000010320008c000007e80000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000003020000290000000002020433000000010320008c0000089e0000a13d000005db0100004100000000001004350000002101000039000000040010043f000005dc010000410000169c00010430000000400100043d0000008402100039000005cb0300004100000000003204350000006402100039000005cc0300004100000000003204350000004402100039000005cd030000410000000000320435000000240210003900000043030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005ce011001c70000169c00010430000000400200043d0000001f0340018f0000000504400272000008130000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000080b0000413d000000000503004b000008220000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400400043d000800000004001d000005e8010000410000000000140435000000040140003900000009020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a168a0000040f000000080a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000008520000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000084a0000413d00000000090a0019000000000705004b000008620000613d0000000506600210000000000761034f00000000066900190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000008780000613d0000001f01400039000000600210018f0000000001920019000000000221004b00000000020000190000000102004039000005bc0410009c000004c00000213d0000000102200190000004c00000c13d000000400010043f000000200130008c0000048b0000413d0000000001090433000000000101004b000000000100001900000001010060390000041f0000013d000000400200043d0000001f0430018f0000000503300272000008850000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000087d0000413d000000000504004b000008940000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b000000090100002900000084021000390000000301000367000000000221034f000000000202043b0000000803000029000000230330008a000005bb04000041000000000532004b00000000050000190000000005048019000005bb03300197000005bb06200197000000000736004b0000000004008019000000000336013f000005bb0330009c00000000030500190000000003046019000000000303004b0000048b0000c13d000000090300002900000000023200190000000403200039000000000131034f000000000101043b000800000001001d000005bc0110009c0000048b0000213d000000080100002900000000011000790000002404200039000005bb02000041000000000314004b00000000030000190000000003022019000005bb01100197000500000004001d000005bb04400197000000000514004b0000000002008019000000000114013f000005bb0110009c00000000010300190000000001026019000000000101004b0000048b0000c13d00000009010000290000004401100039169a0a280000040f000000000601001900000007010000290000000402000029000000060300002900000005040000290000000805000029169a13880000040f00000000010000190000169b0001042e000000400200043d0000001f0340018f0000000504400272000008ed0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008e50000413d000000000503004b000008fc0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000001f03100039000005bb04000041000000000523004b00000000050000190000000005044019000005bb06200197000005bb03300197000000000763004b000000000400a019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b0000091f0000613d0000000303100367000000000303043b000005bc0430009c0000091f0000213d00000020011000390000000004310019000000000224004b0000091f0000213d0000000002030019000000000001042d00000000010000190000169c00010430000300000000000200000000070004140000000008450019000000000558004b00000000050000190000000105004039000005a8044001970000000105500190000009af0000c13d0000000006000031000000000586004b000009af0000413d000200000002001d000300000001001d000100000003001d0000000304400367000005ef0570009c000009bd0000813d0000000002860049000005a80220019700000000022403df000000c001700210000005f001100197000005f1011001c700000000011203af0000801002000039169a168f0000040f00000000030100190000006003300270000105a80030019d000005a80330019700040000000103550000000102200190000009cf0000613d0000003f01300039000005f202100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000005bc0520009c000009b50000213d0000000104400190000009b50000c13d000000400020043f00000000023104360000001f0430003900000005044002720000095e0000613d00000000050000310000000305500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000009560000413d000000000400004b000009600000613d0000000104000031000000000443004b000009bb0000213d00000004050003670000001f0430018f0000000503300272000009700000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000009680000413d000000000604004b0000097f0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000003040000290000000205000029000009ea0000c13d0000000002020433000000400100043d000000a003100039000000000023043500000080021000390000000000520435000000600210003900000001030000290000000000320435000005bd02400197000000400310003900000000002304350000002002100039000005f4030000410000000000320435000000a0030000390000000000310435000005f50310009c000009b50000213d000000c003100039000000400030043f000005a803000041000005a80420009c000000000203801900000040022002100000000001010433000005a80410009c00000000010380190000006001100210000000000121019f0000000002000414000005a80420009c0000000002038019000000c002200210000000000112019f000005da011001c70000801002000039169a168a0000040f0000000102200190000009bb0000613d000000000101043b000005bd01100197000000000001042d000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c0001043000000000010000190000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f0000000502300272000009da0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000009d30000413d000000000504004b000009e80000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400100043d0000004402100039000005f303000041000000000032043500000024021000390000001f030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c00010430000000400300043d00000060043000390000000000240435000005bd011001970000004002300039000000000012043500000060010000390000000001130436000005f7020000410000000000210435000005f80230009c00000a200000813d0000008002300039000000400020043f000005a802000041000005a80410009c000000000102801900000040011002100000000003030433000005a80430009c00000000030280190000006003300210000000000113019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000112019f000005da011001c70000801002000039169a168a0000040f000000010220019000000a260000613d000000000101043b000005bd01100197000000000001042d000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c0001043000000000010000190000169c000104300000000301100367000000000101043b000000000201004b0000000002000019000000010200c039000000000221004b00000a300000c13d000000000001042d00000000010000190000169c000104300008000000000002000700000001001d000000000101004b00000d250000613d000300000004001d000400000003001d000000400400043d000200000002001d000005bd022001970000ffff0120008c00000d370000a13d000005f90100004100000000001404350000000401400039000800000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039000600000002001d000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000a630000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000a5b0000413d000000000705004b00000a720000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000d4b0000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005bc0240009c00000d130000213d000000010110019000000d130000c13d000000400040043f0000001f0130008c00000d110000a13d00000000010a0433000000000101004b000000040140003900000d710000c13d000005fb02000041000000000024043500000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800302000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000aab0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000aa30000413d000000000705004b00000aba0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000d810000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c00000d130000213d000000400040043f000000200130008c00000d110000413d00000000010a0433000000000101004b00000da70000c13d000005c1010000410000000000140435000000040140003900000007020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800402000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000aee0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000ae60000413d000000000705004b00000afd0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0004000000010355000000010220019000000db80000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c00000d130000213d000000400040043f000000200130008c00000d110000413d00000000010a0433000000000101004b00000dde0000613d000005ca0140009c00000d130000213d0000004001400039000000400010043f0000000001040436000100000001001d000000000001043500000008010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039000500000004001d169a168a0000040f0000000503000029000000010220019000000d110000613d000000000101043b0000000002030433000000020320008c00000d190000813d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b00000001020000290000000002020433000000010320008c00000d190000213d000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b0000000001000416000005d5020000410000000000200439000000000101004b00000ba70000613d0000800a010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039000500000002001d169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d000005fd0100004100000000001404350000004401400039000000000200041600000000002104350000002401400039000000080200002900000000002104350000000001000410000005bd0110019700000004024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000100000004001d00000000010440190000004001100210000000c002200210000000000112019f000005c6011001c70000800a02000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e680000613d0000000102000029000005bc0120009c00000d130000213d000000400020043f000005d501000041000000000010043900000005020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e8e0000613d0000000502000029000005bc0120009c00000d130000213d000000400020043f00000000010004160000060101100197000000000001041700000bd80000013d00000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000eb40000613d0000000502000029000005bc0120009c00000d130000213d000000400020043f0000000001000414000000040400002900000003030000290000000002430019000000000332004b00000000030000190000000103004039000005a804400197000000010330019000000d1f0000c13d0000000003000031000000000523004b00000d1f0000413d0000000304400367000005ef0510009c00000def0000813d00000000050004110000000002230049000005a80220019700000000022403df000000c001100210000005f00110019700000602011001c700000000011203af000300000005001d000005bd0d5001970000000202000029169a16940000040f00000000030100190000006003300270000105a80030019d000005a8033001970004000000010355000000010220019000000e010000613d0000003f01300039000005f201100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005bc0410009c00000d130000213d000000010220019000000d130000c13d000000400010043f000500000005001d00000000073504360000001f01300039000000050110027200000c170000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b00000c0f0000413d000000000100004b00000c190000613d0000000101000031000000000113004b00000d110000213d00000004020003670000001f0130018f000000050330027200000c290000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b00000c210000413d000000000401004b00000c380000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000005d501000041000000000010043900000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7000400000007001d169a168a0000040f000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400400043d00000603010000410000000000140435000000040140003900000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e1c0000613d0000000609000029000005bc0190009c000000050100002900000d130000213d000000400090043f0000000001010433000005bb02000041000000200310008c00000000030000190000000003024019000005bb04100197000000000504004b000000000200a019000005bb0440009c000000000203c019000000000202004b000000040400002900000d110000c13d0000000002040433000005bc0320009c00000d110000213d000000000141001900000000024200190000001f03200039000005bb04000041000000000513004b00000000050000190000000005048019000005bb03300197000005bb06100197000000000763004b0000000004008019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b00000d110000c13d0000000023020434000005bc0430009c00000d130000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005bc0540009c00000d130000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b00000d110000213d000000000432004b00000cb70000813d00000000040900190000000005210049000005bb06000041000000400750008c00000000070000190000000007064019000005bb05500197000000000805004b000000000600a019000005bb0550009c00000000050700190000000005066019000000000505004b00000d110000c13d000000400500043d000005ca0650009c00000d130000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b00000c9c0000413d000005d501000041000000000010043900008005010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f0000000606000029000000010220019000000d110000613d000000000101043b000000000101004b00000d110000613d000000400700043d000000240170003900000040020000390000000000210435000006040100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b00000ce30000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b00000cd90000413d0000000001720049000005a802000041000005a80370009c000000000302001900000000030740190000004003300210000005a80410009c00000000010280190000006001100210000000000131019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a8043001970004000000010355000000010220019000000e420000613d0000000602000029000005bc0120009c000000000102001900000d130000213d000000400010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000000030500002900000007060000290000000807000029169a16850000040f000000010120019000000d110000613d000000000001042d00000000010000190000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000002101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000400100043d00000044021000390000060703000041000000000032043500000024021000390000001b030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c00010430000000640140003900000605020000410000000000210435000000440140003900000606020000410000000000210435000000240140003900000028020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005e3011001c70000169c00010430000000400200043d0000001f0430018f000000050330027200000d580000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000d500000413d000000000504004b00000d670000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004402400039000005fa030000410000000000320435000000240240003900000015030000390000000000320435000005be02000041000000000024043500000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f000000050330027200000d8e0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000d860000413d000000000504004b00000d9d0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005fc020000410000000000210435000000240140003900000013020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f000000050330027200000dc50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000dbd0000413d000000000504004b00000dd40000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005c502000041000000000021043500000024014000390000001a020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f000000050230027200000e0c0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000e050000413d000000000504004b00000e1a0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400200043d0000001f0340018f000000050440027200000e290000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e210000413d000000000503004b00000e380000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000e4f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e470000413d000000000503004b00000e5e0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000e750000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e6d0000413d000000000503004b00000e840000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000e9b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000e930000413d000000000503004b00000eaa0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f000000050440027200000ec10000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000eb90000413d000000000503004b00000ed00000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300008000000000002000300000005001d000700000001001d000000000101004b000011d30000613d000400000003001d000200000004001d000000400400043d000100000002001d000005bd022001970000ffff0120008c000011e50000a13d000005f90100004100000000001404350000000401400039000800000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039000600000002001d000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000f0c0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000f040000413d000000000705004b00000f1b0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000011f90000613d0000001f01400039000000600110018f0000000004a10019000000000114004b00000000010000190000000101004039000005bc0240009c000011c10000213d0000000101100190000011c10000c13d000000400040043f0000001f0130008c000011bf0000a13d00000000010a0433000000000101004b0000121f0000c13d000005fb010000410000000000140435000000040140003900000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800302000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000f540000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000f4c0000413d000000000705004b00000f630000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000012300000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c000011c10000213d000000400040043f000000200130008c000011bf0000413d00000000010a0433000000000101004b0000000401400039000012560000c13d000005c102000041000000000024043500000007020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800402000039000500000004001d169a168a0000040f000000050a00002900000000030100190000006003300270000005a803300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000f970000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000f8f0000413d000000000705004b00000fa60000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00040000000103550000000102200190000012660000613d0000001f01400039000000600110018f0000000004a10019000005bc0140009c000011c10000213d000000400040043f000000200130008c000011bf0000413d00000000010a0433000000000101004b0000128c0000613d000005ca0140009c000011c10000213d0000004001400039000000400010043f000000000304043600000000000304350000000402000029000000020120008c000011c70000813d0000000000240435000400000003001d000000000003043500000008010000290000000000100435000000200000043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005c3011001c70000801002000039000500000004001d169a168a0000040f00000005030000290000000102200190000011bf0000613d000000000101043b0000000002030433000000010320008c0000000405000029000011c70000213d000000000301041a000001000400008a000000000343016f000000000223019f000000000021041b0000000002050433000000010320008c000011c70000213d000000000301041a000005c404000041000000000343016f00000008022002100000ff000220018f000000000223019f000000000021041b0000000001000416000005d5020000410000000000200439000000000101004b000010550000613d0000800a010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039000500000002001d169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d000005fd0100004100000000001404350000004401400039000000000200041600000000002104350000002401400039000000080200002900000000002104350000000001000410000005bd0110019700000004024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000400000004001d00000000010440190000004001100210000000c002200210000000000112019f000005c6011001c70000800a02000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000013160000613d0000000402000029000005bc0120009c000011c10000213d000000400020043f000005d501000041000000000010043900000005020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a804300197000400000001035500000001022001900000133c0000613d0000000502000029000005bc0120009c000011c10000213d000000400020043f000000000100041600000601011001970000000000010417000010860000013d00000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d000005fe0100004100000000001404350000000401400039000000080200002900000000002104350000000701000029000005ff0110019700000600011001c700000024024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000013620000613d0000000502000029000005bc0120009c000011c10000213d000000400020043f0000000001000414000000020400002900000003030000290000000002430019000000000332004b00000000030000190000000103004039000005a8044001970000000103300190000011cd0000c13d0000000003000031000000000523004b000011cd0000413d0000000304400367000005ef0510009c0000129d0000813d00000000050004110000000002230049000005a80220019700000000022403df000000c001100210000005f00110019700000602011001c700000000011203af000300000005001d000005bd0d5001970000000102000029169a16940000040f00000000030100190000006003300270000105a80030019d000005a80330019700040000000103550000000102200190000012af0000613d0000003f01300039000005f201100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005bc0410009c000011c10000213d0000000102200190000011c10000c13d000000400010043f000500000005001d00000000073504360000001f013000390000000501100272000010c50000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b000010bd0000413d000000000100004b000010c70000613d0000000101000031000000000113004b000011bf0000213d00000004020003670000001f0130018f0000000503300272000010d70000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000010cf0000413d000000000401004b000010e60000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000005d501000041000000000010043900000006020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7000400000007001d169a168a0000040f0000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400400043d00000603010000410000000000140435000000040140003900000008020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000012ca0000613d0000000609000029000005bc0190009c0000000501000029000011c10000213d000000400090043f0000000001010433000005bb02000041000000200310008c00000000030000190000000003024019000005bb04100197000000000504004b000000000200a019000005bb0440009c000000000203c019000000000202004b0000000404000029000011bf0000c13d0000000002040433000005bc0320009c000011bf0000213d000000000141001900000000024200190000001f03200039000005bb04000041000000000513004b00000000050000190000000005048019000005bb03300197000005bb06100197000000000763004b0000000004008019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b000011bf0000c13d0000000023020434000005bc0430009c000011c10000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004940019000005bc0540009c000011c10000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b000011bf0000213d000000000432004b000011650000813d00000000040900190000000005210049000005bb06000041000000400750008c00000000070000190000000007064019000005bb05500197000000000805004b000000000600a019000005bb0550009c00000000050700190000000005066019000000000505004b000011bf0000c13d000000400500043d000005ca0650009c000011c10000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b0000114a0000413d000005d501000041000000000010043900008005010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f00000006060000290000000102200190000011bf0000613d000000000101043b000000000101004b000011bf0000613d000000400700043d000000240170003900000040020000390000000000210435000006040100004100000000001704350000000401700039000000080200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b000011910000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b000011870000413d0000000001720049000005a802000041000005a80370009c000000000302001900000000030740190000004003300210000005a80410009c00000000010280190000006001100210000000000131019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000121019f0000800502000039000600000007001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000012f00000613d0000000602000029000005bc0120009c0000000001020019000011c10000213d000000400010043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000000030500002900000007060000290000000807000029169a16850000040f0000000101200190000011bf0000613d000000000001042d00000000010000190000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000002101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000400100043d00000044021000390000060703000041000000000032043500000024021000390000001b030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c00010430000000640140003900000605020000410000000000210435000000440140003900000606020000410000000000210435000000240140003900000028020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005e3011001c70000169c00010430000000400200043d0000001f0430018f0000000503300272000012060000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000011fe0000413d000000000504004b000012150000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005fa020000410000000000210435000000240140003900000015020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f00000005033002720000123d0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000012350000413d000000000504004b0000124c0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004402400039000005fc030000410000000000320435000000240240003900000013030000390000000000320435000005be02000041000000000024043500000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400200043d0000001f0430018f0000000503300272000012730000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000126b0000413d000000000504004b000012820000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300000004401400039000005c502000041000000000021043500000024014000390000001a020000390000000000210435000005be010000410000000000140435000000040140003900000020020000390000000000210435000005a801000041000005a80240009c00000000010440190000004001100210000005c6011001c70000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f0000000502300272000012ba0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000012b30000413d000000000504004b000012c80000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400200043d0000001f0340018f0000000504400272000012d70000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000012cf0000413d000000000503004b000012e60000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000012fd0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000012f50000413d000000000503004b0000130c0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000013230000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000131b0000413d000000000503004b000013320000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000013490000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000013410000413d000000000503004b000013580000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f00000005044002720000136f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000013670000413d000000000503004b0000137e0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c000104300009000000000002000500000005001d000700000003001d000800000002001d000600000001001d0000000002000416000000000106004b0000152f0000613d000300000004001d000400000002001d000000000102004b000013cb0000613d000005d50100004100000000001004390000800a010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400400043d000005fd0100004100000000001404350000004401400039000000000200041600000000002104350000000801000029000005bd01100197000000240240003900000000001204350000000001000410000005bd0110019700000004024000390000000000120435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000900000004001d00000000010440190000004001100210000000c002200210000000000112019f000005c6011001c70000800a02000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000016240000613d0000000902000029000005bc0120009c000015790000213d000000400020043f000005d501000041000000000010043900008002020000390000000400200443000005a8010000410000000003000414000005a80430009c0000000001034019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d0000000701000029000005ff0110019700000600011001c7000000400400043d00000024024000390000000000120435000005fe0100004100000000001404350000000801000029000005bd021001970000000401400039000900000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000200000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039000100000002001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000015850000613d0000000202000029000005bc0120009c0000000401000029000015790000213d000000400020043f000000000101004b000014070000613d0000000001000416000006010110019700000000000104170000000001000414000000030400002900000005030000290000000002430019000000000332004b00000000030000190000000103004039000005a80440019700000001033001900000157f0000c13d0000000003000031000000000523004b0000157f0000413d0000000304400367000005ef0510009c000015ab0000813d0000000002230049000005a80220019700000000022403df000000c001100210000005f00110019700000602011001c700000000011203af0000000602000029000005bd0d200197000000080200002900080000000d001d169a16940000040f00000000030100190000006003300270000105a80030019d000005a80330019700040000000103550000000102200190000015bd0000613d0000003f01300039000005f201100197000000400500043d0000000001150019000000000251004b00000000020000190000000102004039000005bc0410009c000015790000213d0000000102200190000015790000c13d000000400010043f000500000005001d00000000073504360000001f013000390000000501100272000014460000613d00000000020000310000000302200367000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000514004b0000143e0000413d000000000100004b000014480000613d0000000101000031000000000113004b000015770000213d00000004020003670000001f0130018f0000000503300272000014580000613d000000000400001900000005054002100000000006570019000000000552034f000000000505043b00000000005604350000000104400039000000000534004b000014500000413d000000000401004b000014670000613d0000000503300210000000000232034f00000000033700190000000301100210000000000403043300000000041401cf000000000414022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000141019f0000000000130435000005d501000041000000000010043900000001020000290000000400200443000005a8010000410000000004000414000005a80340009c0000000001044019000000c001100210000005d6011001c7000400000007001d169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400400043d00000603010000410000000000140435000000040140003900000009020000290000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000600000004001d00000000010440190000004001100210000000c002200210000000000112019f000005dc011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000015d80000613d0000000609000029000005bc0190009c0000000501000029000015790000213d000000400090043f0000000001010433000005bb02000041000000200310008c00000000030000190000000003024019000005bb04100197000000000504004b000000000200a019000005bb0440009c000000000203c019000000000202004b0000000404000029000015770000c13d0000000002040433000005bc0320009c000015770000213d000000000114001900000000024200190000001f03200039000005bb04000041000000000513004b00000000050000190000000005048019000005bb03300197000005bb06100197000000000763004b0000000004008019000000000363013f000005bb0330009c00000000030500190000000003046019000000000303004b000015770000c13d0000000023020434000005bc0430009c000015790000213d00000005043002100000003f04400039000000200500008a000000000454016f0000000004490019000005bc0540009c000015790000213d000000400040043f000000000039043500000006033002100000000003230019000000000413004b000015770000213d000000000432004b000014e60000813d00000000040900190000000005210049000005bb06000041000000400750008c00000000070000190000000007064019000005bb05500197000000000805004b000000000600a019000005bb0550009c00000000050700190000000005066019000000000505004b000015770000c13d000000400500043d000005ca0650009c000015790000213d00000020044000390000004006500039000000400060043f000000007602043400000000066504360000000007070433000000000076043500000000005404350000004002200039000000000532004b000014cb0000413d000005d501000041000000000010043900008005010000390000000400100443000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005d6011001c70000800202000039169a168a0000040f00000006060000290000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400700043d000000240170003900000040020000390000000000210435000006040100004100000000001704350000000401700039000000090200002900000000002104350000000001060433000000440270003900000000001204350000006402700039000000000301004b000015120000613d000000000300001900000020066000390000000004060433000000005404043400000000044204360000000005050433000000000054043500000040022000390000000103300039000000000413004b000015080000413d0000000001720049000005a802000041000005a80370009c000000000302001900000000030740190000004003300210000005a80410009c00000000010280190000006001100210000000000131019f0000000003000414000005a80430009c0000000002034019000000c002200210000000000121019f0000800502000039000500000007001d169a16850000040f00000000030100190000006003300270000105a80030019d000005a80430019700040000000103550000000102200190000015fe0000613d0000000502000029000005bc0120009c000015660000a13d000015790000013d000000000102004b0000164a0000c13d000005d501000041000000000010043900008002020000390000000400200443000005a8010000410000000003000414000005a80430009c0000000001034019000000c001100210000005d6011001c7169a168a0000040f0000000102200190000015770000613d000000000101043b000000000101004b000015770000613d000000400400043d000000240140003900000007020000290000000000210435000005e40100004100000000001404350000000801000029000005bd021001970000000401400039000900000002001d0000000000210435000005a8010000410000000002000414000005a80320009c0000000002018019000005a80340009c000500000004001d00000000010440190000004001100210000000c002200210000000000112019f000005e5011001c70000800202000039169a16850000040f00000000030100190000006003300270000105a80030019d000005a804300197000400000001035500000001022001900000165f0000613d0000000502000029000005bc0120009c000015790000213d0000000601000029000005bd01100197000800000001001d000000400020043f000005a8010000410000000002000414000005a80320009c0000000001024019000000c001100210000005da011001c70000800d020000390000000403000039000005e604000041000000080500002900000007060000290000000907000029169a16850000040f0000000101200190000015770000613d000000000001042d00000000010000190000169c00010430000005db0100004100000000001004350000004101000039000000040010043f000005dc010000410000169c00010430000005db0100004100000000001004350000001101000039000000040010043f000005dc010000410000169c00010430000000400200043d0000001f0340018f0000000504400272000015920000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000158a0000413d000000000503004b000015a10000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400100043d0000004402100039000005f6030000410000000000320435000000240210003900000008030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005c6011001c70000169c000104300000001f0430018f0000000502300272000015c80000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000015c10000413d000000000504004b000015d60000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000169c00010430000000400200043d0000001f0340018f0000000504400272000015e50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000015dd0000413d000000000503004b000015f40000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f00000005044002720000160b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000016030000413d000000000503004b0000161a0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400200043d0000001f0340018f0000000504400272000016310000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000016290000413d000000000503004b000016400000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c00010430000000400100043d0000006402100039000005e10300004100000000003204350000004402100039000005e2030000410000000000320435000000240210003900000038030000390000000000320435000005be020000410000000000210435000000040210003900000020030000390000000000320435000005a802000041000005a80310009c00000000010280190000004001100210000005e3011001c70000169c00010430000000400200043d0000001f0340018f00000005044002720000166c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000016640000413d000000000503004b0000167b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000005a8010000410000000103000031000005a80430009c0000000003018019000005a80420009c000000000102401900000040011002100000006002300210000000000112019f0000169c0001043000001688002104210000000102000039000000000001042d0000000002000019000000000001042d0000168d002104230000000102000039000000000001042d0000000002000019000000000001042d00001692002104230000000102000039000000000001042d0000000002000019000000000001042d000000000f0d001900001698002104290000000102000039000000000001042d0000000002000019000000000001042d0000169a000004320000169b0001042e0000169c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009c4d535a00000000000000000000000000000000000000000000000000000000e9f18c1600000000000000000000000000000000000000000000000000000000ecf95b8900000000000000000000000000000000000000000000000000000000ecf95b8a00000000000000000000000000000000000000000000000000000000f3385fb600000000000000000000000000000000000000000000000000000000e9f18c1700000000000000000000000000000000000000000000000000000000ec8067c7000000000000000000000000000000000000000000000000000000009c4d535b00000000000000000000000000000000000000000000000000000000bb0fd61000000000000000000000000000000000000000000000000000000000da37f07f000000000000000000000000000000000000000000000000000000005d3826ff000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000007b510fe80000000000000000000000000000000000000000000000000000000084da1fb400000000000000000000000000000000000000000000000000000000187598a5000000000000000000000000000000000000000000000000000000003cda335100000000000000000000000000000000000000000000000000000000571809818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792073656c66000000000000000000000000000000000000000000000000000000000000640000008000000000000000004c6314f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000200000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff54686520636f64652068617368206973206e6f74206b6e6f776e00000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000010000306395c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf696e6700000000000000000000000000000000000000000000000000000000006f6d2073657175656e7469616c20746f20617262697472617279206f726465724974206973206f6e6c7920706f737369626c6520746f206368616e676520667200000000000000000000000000000000000000a40000000000000000000000000200000000000000000000000000000000000020000000000000000000000000c7544194dab38b1652f35439b9b4806d8b71e113f2cf5c1351cb2ecf7c83959a43616e206f6e6c792062652063616c6c656420627920464f5243455f4445504c4f594552206f7220434f4d504c45585f55504752414445525f434f4e54524143540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a40000008000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000f3385fb60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffefb000000000000000000000000000000000000010400000000000000000000000002000000000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006d656e74730000000000000000000000000000000000000000000000000000002074686520636f6d62696e6564206076616c75656073206f66206465706c6f796076616c7565602070726f7669646564206973206e6f7420657175616c20746f496e617070726f7072696174652063616c6c65720000000000000000000000006e6f742063616c6c2074686520636f6e7374727563746f7200000000000000005468652076616c7565206d757374206265207a65726f20696620776520646f2000000000000000000000000000000000000000840000000000000000000000000d4651aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e5000000000000000000000000ffffffffffffffffffffffffffffffffffff00004de2e46800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000400000000000000000000000003fb6f4f15ddd4a75588ca934894ad2cdcab25a5012e2515e1783433d0128611a666c61670000000000000000000000000000000000000000000000000000000054686973206d6574686f6420726571756972652073797374656d2063616c6c200000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe06b656363616b3235362072657475726e656420696e76616c69642064617461002020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494000000000000000000000000000000000000000000000000ffffffffffffff3f4f766572666c6f7700000000000000000000000000000000000000000000000063bae3a9951d38e8a3fbb7b70909afc1200610fc5bc55ade242f815974674f23000000000000000000000000000000000000000000000000ffffffffffffff80e03fe17700000000000000000000000000000000000000000000000000000000436f64652068617368206973206e6f6e2d7a65726f00000000000000000000005aa9b6b5000000000000000000000000000000000000000000000000000000004163636f756e74206973206f6363757069656400000000000000000000000000579952fc000000000000000000000000000000000000000000000000000000004f1e1be000000000000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0001000100000000000000000000000000000000000000000000000000000000c2e4ff9700000000000000000000000000000000000000000000000000000000ad7e232e00000000000000000000000000000000000000000000000000000000656c20737061636500000000000000000000000000000000000000000000000043616e206e6f74206465706c6f7920636f6e74726163747320696e206b65726e42797465636f6465486173682063616e6e6f74206265207a65726f000000000039187a54c09fddd78293acb1d6fafb891fffc8438366fb93b8fe735877e8b717", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/DefaultAccount.json b/src/deps/contracts/DefaultAccount.json index 26015e0f..42e74032 100644 --- a/src/deps/contracts/DefaultAccount.json +++ b/src/deps/contracts/DefaultAccount.json @@ -539,8 +539,8 @@ "type": "receive" } ], - "bytecode": "0x0004000000000002000b000000000002000000000301001900000060033002700000060d04300197000300000041035500020000000103550000060d0030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000002000031000000040120008c000000410000413d0000000201000367000000000301043b000000e0033002700000060f0430009c000000450000a13d000006100430009c000000a90000613d000006110430009c000000ea0000613d000006120330009c000000a60000c13d000000040220008a0000061503000041000000200420008c000000000400001900000000040340190000061505200197000000000605004b000000000300a019000006150550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000006160310009c0000010d0000213d00000000011200490000061502000041000002600310008c000000000300001900000000030240190000061501100197000000000401004b000000000200a019000006150110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d0000002001000039000001000010044300000120000004430000060e010000410000182f0001042e000000000102004b000000a60000c13d00000000010000190000182f0001042e000006130430009c000000eb0000613d000006140330009c000000a60000c13d000000040320008a0000061504000041000000600530008c000000000500001900000000050440190000061503300197000000000603004b000000000400a019000006150330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000006160430009c0000010d0000213d000000040530003900000000045200490000061506000041000002600740008c000000000700001900000000070640190000061504400197000000000804004b000000000600a019000006150440009c00000000040700190000000004066019000000000404004b0000010d0000c13d0000000004000411000080010440008c000000430000c13d000000000400041200000617064001970000000004000410000000000646004b000000430000c13d0000022406300039000000000661034f0000000007320049000000230770008a000000000606043b0000061508000041000000000976004b000000000900001900000000090880190000061507700197000006150a600197000000000b7a004b000000000800801900000000077a013f000006150770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000006160760009c0000010d0000213d000000000762004900000020025000390000061508000041000000000972004b000000000900001900000000090820190000061507700197000006150a200197000000000b7a004b000000000800801900000000077a013f000006150770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000062301000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000063b01000041000000c40010043f0000063c01000041000000e40010043f0000063a010000410000183000010430182e17ee0000040f00000000010000190000182f0001042e000000040320008a0000061504000041000000600630008c000000000600001900000000060440190000061503300197000000000703004b000000000400a019000006150330009c00000000030600190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000703043b000006160370009c0000010d0000213d000000040670003900000000036200490000061504000041000002600830008c000000000800001900000000080440190000061503300197000000000903004b000000000400a019000006150330009c00000000030800190000000003046019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d000000000300041200000617033001970000000004000410000000000343004b000000430000c13d0000012403700039000000000331034f0000004404700039000000000441034f000000000404043b0000061704400197000000000303043b000006180830009c000001310000413d000000440150003900000622020000410000000000210435000000240150003900000008020000390000000000210435000006230100004100000000001504350000000401500039000000200200003900000000002104350000060d010000410000060d0250009c0000000001054019000000400110021000000624011001c70000183000010430182e16390000040f000000040320008a0000061504000041000000600530008c000000000500001900000000050440190000061503300197000000000603004b000000000400a019000006150330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000b00000003001d000006160330009c0000010d0000213d0000000b030000290000000403300039000a00000003001d00000000023200490000061503000041000002600420008c000000000400001900000000040340190000061502200197000000000502004b000000000300a019000006150220009c00000000020400190000000002036019000000000202004b0000010f0000613d000000000100001900001830000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d000000000100041200000617011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d00000020031000390000063d0400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b00000024041000390000000000340435000000240300003900000000003104350000063e0310009c0000015e0000413d000006510100004100000000001004350000004101000039000000040010043f00000652010000410000183000010430000001c405700039000000000551034f0000000007720049000000230770008a000000000505043b0000061508000041000000000975004b000000000900001900000000090880190000061507700197000006150a500197000000000b7a004b000000000800801900000000077a013f000006150770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005650019000000000151034f000000000601043b000006160160009c0000010d0000213d000000000162004900000020075000390000061502000041000000000517004b0000000005000019000000000502201900000615011001970000061508700197000000000918004b0000000002008019000000000118013f000006150110009c00000000010500190000000001026019000000000101004b0000010d0000c13d0000000001000414000006190210009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f0000000004010433000006190540009c000001740000413d00000623020000410000000000230435000000a402100039000006220400004100000000004204350000008402100039000000080400003900000000004204350000006401100039000000200200003900000000002104350000060d010000410000060d0230009c0000000001034019000000400110021000000624011001c70000183000010430000000c0022002100000061f0220019700000040011002100000063f011000410000064001100197000000000112019f00000060024002100000064102200197000000000121019f00000642011001c700008003020000390000000003000019000000000400001900000000050000190000000006000019182e181a0000040f000300000001035500000060011002700001060d0010019d0000060d041001970000003f014000390000064305100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000006160630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001022001900000025e0000613d0000000901000029000000000101004b000012b00000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b000002e50000c13d0000000702000029000000000121034f000000000101043b000000800210008c0000031a0000413d0000008002100270000006490310009c000000000201a019000006490310009c0000000003000019000000100300203900000008043001bf000006160520009c00000000030420190000004004200270000006160520009c000000000204201900000004043001bf0000060d0520009c000000000304201900000020042002700000060d0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b000003310000613d00000000040304330000064804400197000000f805200210000000000445019f0000064a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000090200002900000021022000390000000000120435000004740000013d000000000221034f000000000202043b0000061a02200197000006250720009c000002680000c13d000000430260008c000002970000213d0000062301000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000063801000041000000c40010043f0000063901000041000000e40010043f0000063a0100004100001830000104300000000202000367000080060540008c00000000050000190000024b0000c13d000000040560008c00000000050000190000024b0000413d000000000872034f0000000105000039000000000808043b0000061a088001970000061b0980009c0000024a0000613d0000061c0980009c0000024a0000613d0000061d0980009c0000024a0000613d0000061e0580009c00000000050000190000000105006039000000010550018f000000000803004b000002740000c13d000000000306004b000002d00000c13d000000000300003100000620060000410000062107000041000000000505004b00000000050600190000000005076019000000c0011002100000061f01100197000000000115019f0000060d0330019700000000023203df00000000011203af0000000002040019182e18240000040f000002800000013d00000000010104330000060d020000410000060d0410009c00000000010280190000060d0430009c000000000203401900000040022002100000006001100210000000000121019f0000183000010430000006260120009c000000430000613d0000062301000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000062701000041000000c40010043f00000628010000410000183000010430000000000806004b000002d90000c13d00000000060000310000060d0660019700000000026203df000000c0011002100000061f0110019700000620011001c700000000011203af00008009020000390000000006000019182e18240000040f0003000000010355000000000301001900000060033002700001060d0030019d0000060d033001970000000102200190000002b50000613d182e17330000040f0000000002010019000000400100043d000b00000001001d182e16230000040f0000000b0400002900000000014100490000060d020000410000060d0310009c00000000010280190000060d0340009c000000000204401900000040022002100000006001100210000000000121019f0000182f0001042e0000002402500039000000000221034f000000000202043b000b00000002001d000006170220009c0000010d0000213d000000e402300039000000000221034f0000004403500039000000000131034f000000000101043b000a00000001001d000000000102043b0000062902000041000000800020043f0000061702400197000800000002001d000000840020043f0000061701100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c000003930000c13d0000000103000031000000200130008c00000020040000390000000004034019000003bf0000013d0000001f0430018f0000000502300272000002c00000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000002b90000413d000000000504004b000002ce0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000183000010430000000000376001a0000060d06700197000002df0000413d0000000007000031000000000837004b000002df0000413d000000000262034f0000000003370049000002500000013d000000000676001a0000060d07700197000002df0000413d0000000008000031000000000968004b000003e60000813d000006510100004100000000001004350000001101000039000000040010043f00000652010000410000183000010430000000710320008c000003370000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d00000000044200190000061505000041000000000643004b0000000006000019000000000605801900000615044001970000061507300197000000000847004b0000000005008019000000000447013f000006150440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004430019000000000141034f000000000301043b000006160130009c0000010d0000213d000000000132004900000020044000390000061502000041000000000514004b0000000005000019000000000502201900000615011001970000061506400197000000000716004b0000000002008019000000000116013f000006150110009c00000000010500190000000001026019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000006380000c13d0000000003000031000006440000013d000000400200043d000900000002001d000006470220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000003260000413d00000009030000290000000003030433000000000303004b0000046b0000c13d000006510100004100000000001004350000003201000039000000040010043f00000652010000410000183000010430000000020120008c000003e90000c13d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005a60000413d0000008001200270000006490320009c000000000102a019000006490320009c0000000003000019000000100300203900000008043001bf000006160510009c00000000030420190000004004100270000006160510009c000000000104201900000004043001bf0000060d0510009c000000000304201900000020041002700000060d0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003800000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003780000413d000000000500004b000003820000613d0000000005010433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000005c30000013d0000060d020000410000060d0310009c0000000001028019000000c0011002100000062a011001c70000000b02000029182e181f0000040f000000000301001900000060033002700000060d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003ac0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003a40000413d000000000705004b000003bb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000004450000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000062b030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000062c05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c000005450000c13d00000001020000390000000101000031000005560000013d000000000272034f0000000006680049000002770000013d000000010120008c000004c50000c13d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d000000000201043b000000800120008c000006580000413d0000008001200270000006490320009c000000000102a019000006490320009c0000000003000019000000100300203900000008043001bf000006160510009c00000000030420190000004004100270000006160510009c000000000104201900000004043001bf0000060d0510009c000000000304201900000020041002700000060d0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004320000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000042a0000413d000000000500004b000004340000613d0000000005010433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000006750000013d000000400200043d0000001f0430018f0000000503300272000004520000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000044a0000413d000000000504004b000004610000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000060d0100004100000001030000310000060d0430009c00000000030180190000060d0420009c000000000102401900000040011002100000006002300210000000000112019f0000183000010430000000f8031002100000061504000041000000000101004b0000000001030019000000000104601900000000030204330000064803300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c000004d70000413d0000008001200270000006490320009c000000000102a019000006490320009c0000000003000019000000100300203900000008043001bf000006160510009c00000000030420190000004004100270000006160510009c000000000104201900000004043001bf0000060d0510009c000000000304201900000020041002700000060d0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004b20000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004aa0000413d000000000500004b000004b40000613d0000000005010433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000004f40000013d000000400100043d000000440210003900000644030000410000000000320435000000240210003900000017030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400100043d000006470310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004e10000413d0000000004010433000000000404004b000003310000613d000000f8042002100000061505000041000000000202004b0000000002040019000000000205601900000000040304330000064804400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c000006c50000413d0000008002300270000006490430009c000000000203a019000006490430009c0000000004000019000000100400203900000008054001bf000006160620009c00000000040520190000004005200270000006160620009c000000000205201900000004054001bf0000060d0620009c000000000405201900000020052002700000060d0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006160750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005320000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000052a0000413d000000000600004b000005340000613d0000000006020433000000000606004b000003310000613d00000000060504330000064806600197000000f807400210000000000667019f0000064a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006e20000013d0000060d040000410000060d0530009c000000000304801900000060033002100000004002200210000000000223019f0000060d0310009c0000000001048019000000c001100210000000000112019f0000000b02000029182e181a0000040f000000010220018f000300000001035500000060011002700001060d0010019d0000060d011001970000006003000039000700000003001d000000000301004b000005760000c13d00000007010000290000000031010434000300000003001d000000000202004b000006130000c13d000000000201004b000007760000c13d000000400300043d000b00000003001d0000062301000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000501000029182e16100000040f0000000b0400002900000000014100490000060d020000410000060d0310009c00000000010280190000060d0340009c000000000204401900000040022002100000006001100210000000000121019f0000183000010430000006160310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000005960000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b0000058e0000413d000000000604004b0000055a0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000055a0000013d000000400100043d000006470310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005b00000413d0000000004010433000000000404004b000003310000613d000000f8042002100000061505000041000000000202004b0000000002040019000000000205601900000000040304330000064804400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000009650000413d0000008002300270000006490430009c000000000203a019000006490430009c0000000004000019000000100400203900000008054001bf000006160620009c00000000040520190000004005200270000006160620009c000000000205201900000004054001bf0000060d0620009c000000000405201900000020052002700000060d0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006160750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000006000000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005f80000413d000000000600004b000006020000613d0000000006020433000000000606004b000003310000613d00000000060504330000064806600197000000f807400210000000000667019f0000064a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000009820000013d000000000201004b00000a600000c13d0000062d0100004100000000001004390000000b0100002900000004001004430000060d0100004100000000020004140000060d0320009c0000000001024019000000c0011002100000062e011001c70000800202000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000000000101004b00000a5c0000c13d000000400100043d00000044021000390000063703000041000000000032043500000024021000390000001d030000390000000000320435000006230200004100000000002104350000000402100039000000060300002900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c700001830000104300000060d054001970000000004430019000000000334004b000000000300001900000001030040390000000103300190000002df0000c13d0000000003000031000000000643004b000002df0000413d000000000252034f0000000003430049000006190410009c000007810000413d000000400100043d000000440210003900000622030000410000000000320435000000240210003900000008030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400100043d000006470310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000006620000413d0000000004010433000000000404004b000003310000613d000000f8042002100000061505000041000000000202004b0000000002040019000000000205601900000000040304330000064804400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c000009ee0000413d0000008003200270000006490420009c000000000302a019000006490420009c0000000004000019000000100400203900000008054001bf000006160630009c00000000040520190000004005300270000006160630009c000000000305201900000004054001bf0000060d0630009c000000000405201900000020053002700000060d0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000006160750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006b20000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000006aa0000413d000000000600004b000006b40000613d0000000006030433000000000606004b000003310000613d00000000060504330000064806600197000000f807400210000000000667019f0000064a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c00000000020020190000002104300039000000000024043500000a0b0000013d000000400200043d000006470420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006cf0000413d0000000005020433000000000505004b000003310000613d000000f8053002100000061506000041000000000303004b0000000003050019000000000306601900000000050404330000064805500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006f00000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b000006e90000413d000000000143001900000000000104350000000004020433000000000504004b000006fd0000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b000006f60000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000006160220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f000006470110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000064b0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000be00000413d0000008002100270000006490310009c000000000201a019000006490310009c0000000003000019000000100300203900000008043001bf000006160520009c00000000030420190000004004200270000006160520009c000000000204201900000004043001bf0000060d0520009c000000000304201900000020042002700000060d0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000007610000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007590000413d000000000400004b000007630000613d00000005040000290000000004040433000000000404004b000003310000613d00000000040304330000064804400197000000f805200210000000000445019f0000064a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000c000000013d0000060d0200004100000003040000290000060d0340009c000000000302001900000000030440190000060d0410009c000000000102801900000060011002100000004002300210000000000121019f00001830000104300000060d0330019700000000023203df000000c0011002100000061f0110019700000621011001c700000000011203af0000801002000039182e18290000040f000000000301001900000060033002700001060d0030019d0000060d0330019700030000000103550000000102200190000009d30000613d0000003f013000390000064301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006160510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000007ab0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007a30000413d000000000400004b000007ad0000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000007bd0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000007b50000413d000000000604004b000007cc0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c750000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b0000061506000041000000000753004b0000000007000019000000000706801900000615055001970000061508300197000000000958004b0000000006008019000000000558013f000006150550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000006160350009c0000010d0000213d0000000503500210000000000434004900000020061000390000061501000041000000000746004b0000000007000019000000000701201900000615044001970000061508600197000000000948004b0000000001008019000000000448013f000006150440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d000000200410003900000650055001980000080b0000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000008030000413d000000000200004b0000080d0000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000006160520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f0000060d020000410000060d0340009c00000000030200190000000003044019000000400330021000000000010104330000060d0410009c00000000010280190000006001100210000000000131019f00000000030004140000060d0430009c0000000002034019000000c002200210000000000112019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b0000061506000041000000000754004b0000000007000019000000000706801900000615055001970000061508400197000000000958004b0000000006008019000000000558013f000006150550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000001140019000000000313034f000000000303043b000006160430009c0000010d0000213d000000000232004900000020041000390000061501000041000000000524004b0000000005000019000000000501201900000615022001970000061506400197000000000726004b0000000001008019000000000226013f000006150220009c000000000105c019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000011ac0000c13d00000000030000310000060d0410009c000006460000213d0000060d0330019700000000023203df000000c0011002100000061f0110019700000621011001c700000000011203af0000801002000039182e18290000040f000000000301001900000060033002700001060d0030019d0000060d0330019700030000000103550000000102200190000013060000613d0000003f013000390000064301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006160510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f0430003900000005044002720000088c0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000008840000413d000000000400004b0000088e0000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f00000005033002720000089e0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008960000413d000000000604004b000008ad0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c750000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000654030000410000000000320435000001c0030000390000000000310435000006550310009c0000012b0000213d000001e003100039000000400030043f0000060d030000410000060d0420009c0000000002038019000000400220021000000000010104330000060d0410009c00000000010380190000006001100210000000000121019f00000000020004140000060d0420009c0000000002038019000000c002200210000000000112019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b000006560300004100000000003204350000008003400039000000000013043500000060014000390000065703000041000000000031043500000040014000390000065803000041000000000031043500000080010000390000000000140435000006590140009c0000012b0000213d0000000904000029000000a001400039000000400010043f0000060d010000410000060d0320009c0000000002018019000000400220021000000000030404330000060d0430009c00000000030180190000006003300210000000000223019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d000000000301043b000000400100043d00000042021000390000000704000029000000000042043500000020021000390000065a0400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006330310009c0000012b0000213d0000008003100039000000400030043f0000060d030000410000060d0420009c0000000002038019000000400220021000000000010104330000060d0410009c00000000010380190000006001100210000000000121019f00000000020004140000060d0420009c0000000002038019000000c002200210000000000112019f0000064f011001c70000801002000039182e181f0000040f0000000102200190000012ae0000c13d0000010d0000013d000000400200043d000006470420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a0000096f0000413d0000000005020433000000000505004b000003310000613d000000f8053002100000061506000041000000000303004b0000000003050019000000000306601900000000050404330000064805500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a9d0000413d0000008004300270000006490530009c000000000403a019000006490530009c0000000005000019000000100500203900000008065001bf000006160740009c00000000050620190000004006400270000006160740009c000000000406201900000004065001bf0000060d0740009c000000000506201900000020064002700000060d0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006160860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000009c00000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000009b80000413d000000000700004b000009c20000613d0000000007040433000000000707004b000003310000613d00000000070604330000064807700197000000f808500210000000000778019f0000064a0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000aba0000013d0000001f0430018f0000000502300272000009de0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000009d70000413d000000000504004b000009ec0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000183000010430000000400300043d000006470430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000009f80000413d0000000005030433000000000505004b000003310000613d000000f8052002100000061506000041000000000202004b0000000002050019000000000206601900000000050404330000064805500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b720000413d0000008004200270000006490520009c000000000402a019000006490520009c0000000005000019000000100500203900000008065001bf000006160740009c00000000050620190000004006400270000006160740009c000000000406201900000004065001bf0000060d0740009c000000000506201900000020064002700000060d0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006160860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200000a490000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00000a410000413d000000000700004b00000a4b0000613d0000000007040433000000000707004b000003310000613d00000000070604330000064807700197000000f808500210000000000778019f0000064a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b8f0000013d00000007010000290000000001010433000000000201004b00000a8a0000613d0000061502000041000000200310008c000000000300001900000000030240190000061501100197000000000401004b000000000200a019000006150110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a8a0000c13d000000400100043d00000064021000390000063503000041000000000032043500000044021000390000063603000041000000000032043500000024021000390000002a030000390000000000320435000006230200004100000000002104350000000402100039000000060300002900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000000400300043d00000024013000390000000902000029000000000021043500000629010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000b0b0000c13d0000000103000031000000200130008c0000002004000039000000000403401900000b3e0000013d000000400400043d000006470540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000aa70000413d0000000006040433000000000606004b000003310000613d000000f8063002100000061507000041000000000303004b0000000003060019000000000307601900000000060504330000064806600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c870000413d0000008005300270000006490630009c000000000503a019000006490630009c0000000006000019000000100600203900000008076001bf000006160850009c00000000060720190000004007500270000006160850009c000000000507201900000004076001bf0000060d0850009c000000000607201900000020075002700000060d0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006160970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000af80000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000af00000413d000000000800004b00000afa0000613d0000000008050433000000000808004b000003310000613d00000000080704330000064808800197000000f809600210000000000889019f0000064a0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000ca40000013d0000060d020000410000060d0310009c000000000102801900000007040000290000060d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000062f011001c70000000b02000029182e181f0000040f000000070a000029000000000301001900000060033002700000060d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000b2a0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000b220000413d000000000705004b00000b3a0000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000c4f0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000006160410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000cf50000c13d00000044021000390000000a03000029000000000032043500000020021000390000062b03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006330310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006340310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000062c040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000e050000c13d0000000102000039000000010100003100000e180000013d000000400400043d000006470540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b7c0000413d0000000006040433000000000606004b000003310000613d000000f8062002100000061507000041000000000202004b0000000002060019000000000207601900000000060504330000064806600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000d090000413d0000008005200270000006490620009c000000000502a019000006490620009c0000000006000019000000100600203900000008076001bf000006160850009c00000000060720190000004007500270000006160850009c000000000507201900000004076001bf0000060d0850009c000000000607201900000020075002700000060d0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006160970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000bcd0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000bc50000413d000000000800004b00000bcf0000613d0000000008050433000000000808004b000003310000613d00000000080704330000064808800197000000f809600210000000000889019f0000064a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000d260000013d000000400200043d000500000002001d000006470220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000bec0000413d00000005030000290000000003030433000000000303004b000003310000613d000000f8031002100000061504000041000000000101004b0000000001030019000000000104601900000000030204330000064803300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d00000000044300190000061505000041000000000641004b0000000006000019000000000605801900000615044001970000061507100197000000000847004b0000000005008019000000000447013f000006150440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000006160510009c0000010d0000213d000000000513004900000020034000390000061504000041000000000653004b0000000006000019000000000604201900000615055001970000061507300197000000000857004b0000000004008019000000000557013f000006150550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000f370000c13d000000000132034f000000000101043b000000010200008a0000061503000041000000000221004b000000000200001900000000020320190000061501100197000006150410009c00000000030080190000061501100167000006150110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010950000c13d000000400100043d000400000001001d000006470110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000064a02000041000000000021043500000001010000390000000000130435000010950000013d000000400200043d0000001f0430018f000000050330027200000c5c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c540000413d000000000504004b00000c6b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000060d0100004100000001030000310000060d0430009c00000000030180190000060d0420009c000000000102401900000040011002100000006002300210000000000112019f0000183000010430000000400100043d00000044021000390000065303000041000000000032043500000024021000390000001f030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400500043d000006470650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c910000413d0000000007050433000000000707004b000003310000613d000000f8073002100000061508000041000000000303004b0000000003070019000000000308601900000000070604330000064807700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d870000413d0000008006300270000006490730009c000000000603a019000006490730009c0000000007000019000000100700203900000008087001bf000006160960009c00000000070820190000004008600270000006160960009c000000000608201900000004087001bf0000060d0960009c000000000708201900000020086002700000060d0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000006160a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000ce20000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000cda0000413d000000000900004b00000ce40000613d0000000009060433000000000909004b000003310000613d00000000090804330000064809900197000000f80a70021000000000099a019f0000064a0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000da40000013d000000640210003900000630030000410000000000320435000000440210003900000631030000410000000000320435000000240210003900000036030000390000000000320435000006230200004100000000002104350000000402100039000000060300002900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000000400500043d000006470650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000d130000413d0000000007050433000000000707004b000003310000613d000000f8072002100000061508000041000000000202004b0000000002070019000000000208601900000000070604330000064807700197000000000227019f0000000000260435000000400600043d000006470260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000064b0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e680000413d0000008007200270000006490820009c000000000702a019000006490820009c0000000008000019000000100800203900000008098001bf000006160a70009c00000000080920190000004009700270000006160a70009c000000000709201900000004098001bf0000060d0a70009c000000000809201900000020097002700000060d0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000006160b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d740000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d6c0000413d000000000a00004b00000d760000613d000000000a070433000000000a0a004b000003310000613d000000000a090433000006480aa00197000000f80b800210000000000aab019f0000064a0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e850000013d000000400600043d000006470760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d910000413d0000000008060433000000000808004b000003310000613d000000f8083002100000061509000041000000000303004b0000000003080019000000000309601900000000080704330000064808800197000000000338019f0000000000370435000000400700043d000006470370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000064b090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f9a0000413d0000008008300270000006490930009c000000000803a019000006490930009c00000000090000190000001009002039000000080a9001bf000006160b80009c00000000090a2019000000400a800270000006160b80009c00000000080a2019000000040a9001bf0000060d0b80009c00000000090a2019000000200a8002700000060d0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000006160ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000df20000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000dea0000413d000000000b00004b00000df40000613d000000000b080433000000000b0b004b000003310000613d000000000b0a0433000006480bb00197000000f80c900210000000000bbc019f0000064a0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000fb70000013d0000060d040000410000060d0520009c000000000204801900000040022002100000060d0530009c00000000030480190000006003300210000000000223019f0000060d0310009c0000000001048019000000c001100210000000000112019f0000000b02000029182e181a0000040f000000010220018f000300000001035500000060011002700001060d0010019d0000060d011001970000006003000039000900000003001d000000000301004b00000e380000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f6d0000c13d000000000201004b000011640000c13d000000400300043d000b00000003001d0000062301000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a01000029182e16100000040f0000000b0400002900000000014100490000060d020000410000060d0310009c00000000010280190000060d0340009c000000000204401900000040022002100000006001100210000000000121019f0000183000010430000006160310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e580000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000e500000413d000000000604004b00000e1c0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000e1c0000013d000000400700043d000006470870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e720000413d0000000009070433000000000909004b000003310000613d000000f809200210000006150a000041000000000202004b000000000209001900000000020a601900000000090804330000064809900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e920000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e8b0000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000ea10000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e9a0000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000eb00000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000ea90000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000ebf0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000eb80000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000ece0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000ec70000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000edd0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000ed60000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000006160450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000006150a000041000000000b96004b000000000b000019000000000b0a80190000061509900197000006150c600197000000000d9c004b000000000a00801900000000099c013f000006150990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006160a60009c0000010d0000213d000000000a68004900000020089000390000061509000041000000000ba8004b000000000b000019000000000b092019000006150aa00197000006150c800197000000000dac004b0000000009008019000000000aac013f000006150aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012d40000c13d000000000687034f000000000606043b000000010700008a0000061508000041000000000776004b000000000700001900000000070820190000061506600197000006150960009c00000000080080190000061506600167000006150660009c00000000070860190000006006000039000000000707004b0000136d0000c13d000006470650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000064a0700004100000000007604350000000106000039000000000065043500000000060500190000136d0000013d000000380210008c000010780000413d00000020021002700000060d0310009c000000000301001900000000030220190000060d0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000006470440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f550000413d00000004040000290000000004040433000000000404004b000003310000613d00000000040304330000064804400197000000f805200210000000000445019f0000064c044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010950000013d000000000201004b00000f840000c13d0000062d0100004100000000001004390000000b0100002900000004001004430000060d0100004100000000020004140000060d0320009c0000000001024019000000c0011002100000062e011001c70000800202000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000000000101004b000006260000613d00000009010000290000000001010433000000000201004b000000430000613d0000061502000041000000200310008c000000000300001900000000030240190000061501100197000000000401004b000000000200a019000006150110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a750000613d000000430000013d000000400800043d000006470980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000fa40000413d000000000a080433000000000a0a004b000003310000613d000000f80a300210000006150b000041000000000303004b00000000030a001900000000030b6019000000000a090433000006480aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000fc40000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000fbd0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000fd30000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000fcc0000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000fe20000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000fdb0000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000ff10000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000fea0000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b000010000000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000ff90000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b0000100f0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b000010080000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b0000101e0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b000010170000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000006160450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000006150a000041000000000b96004b000000000b000019000000000b0a80190000061509900197000006150c600197000000000d9c004b000000000a00801900000000099c013f000006150990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006160a60009c0000010d0000213d000000000a68004900000020089000390000061509000041000000000ba8004b000000000b000019000000000b092019000006150aa00197000006150c800197000000000dac004b0000000009008019000000000aac013f000006150aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000013210000c13d000000000687034f000000000606043b000000010700008a0000061508000041000000000776004b000000000700001900000000070820190000061506600197000006150960009c00000000080080190000061506600167000006150660009c00000000070860190000006006000039000000000707004b000014000000c13d000006470650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000064a070000410000000000760435000000010600003900000000006504350000000006050019000014000000013d000000400200043d000400000002001d000006470220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010840000413d00000004030000290000000003030433000000000303004b000003310000613d000000f80110021000000000030204330000064803300197000000000113019f0000061501100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b0000110a0000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b0000061504000041000000000659004b0000000006000019000000000604801900000615055001970000061507900197000000000857004b0000000004008019000000000557013f000006150550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000006160a20009c0000010d0000213d00000000032300490000002009900039000006150a000041000000000b39004b000000000b000019000000000b0a201900000615033001970000061509900197000000000c39004b000000000a008019000000000339013f000006150330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000061602200197000000380320008c000011b50000413d00000020032002700000060d0420009c000000000402001900000000040320190000060d0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d000006470560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010f40000413d0000000005060433000000000505004b000003310000613d00000000050404330000064805500197000000f807300210000000000557019f0000064e055001c700000000005404350000000303300210000000f80330008900000000023201cf00000021036000390000000000230435000011cf0000013d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000116f0000413d0000008002100270000006490310009c000000000201a019000006490310009c0000000003000019000000100300203900000008043001bf000006160520009c00000000030420190000004004200270000006160520009c000000000204201900000004043001bf0000060d0520009c000000000304201900000020042002700000060d0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000442043600000021053000390000000505500272000011510000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000011490000413d000000000500004b000011530000613d0000000005020433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c0000000001002019000000210320003900000000001304350000118c0000013d0000060d0200004100000008040000290000060d0340009c000000000302001900000000030440190000060d0410009c000000000102801900000060011002100000004002300210000000000121019f0000183000010430000000400200043d000006470320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011790000413d0000000004020433000000000404004b000003310000613d000000f8041002100000061505000041000000000101004b0000000001040019000000000105601900000000040304330000064804400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011990000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b000011920000413d00000000024300190000065b0400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000006160420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000109d0000013d000000000343001a0000060d04400197000002df0000413d0000000005000031000000000635004b000002df0000413d000000000242034f0000000003350049000008600000013d000000400600043d000006470360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a000011bf0000413d0000000004060433000000000404004b000003310000613d000000f80220021000000000040304330000064804400197000000000242019f0000064d02200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b0000061507000041000000000854004b0000000008000019000000000807801900000615055001970000061509400197000000000a59004b0000000007008019000000000559013f000006150550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000006160340009c0000010d0000213d000000000242004900000020055000390000061503000041000000000725004b0000000007000019000000000703201900000615022001970000061508500197000000000928004b0000000003008019000000000228013f000006150220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000012070000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000012000000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000012180000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012100000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b000012290000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012210000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b0000123a0000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012320000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b0000124b0000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012430000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b0000125c0000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012540000413d0000000008870019000000000008043500000000066700190000001f0740018f0000002008600039000000020550036700000005094002720000126d0000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012650000413d000000000a07004b0000127c0000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b0000128a0000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012830000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000006160510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f0000060d010000410000060d0430009c0000000003018019000000400330021000000000020204330000060d0420009c00000000020180190000006002200210000000000232019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000900000001001d0000000a01000029182e17f80000040f0000065c02000041000000000020043900000008020000290000000400200443000800000001001d0000800a010000390000002402000039182e15ff0000040f0000000802000029000000000112004b0000000001000019000000010100a039182e16b40000040f0000000b01000029000001e4021000390000000a01000029182e16cc0000040f0000000003000031182e16f80000040f00000000020100190000000901000029182e17400000040f0000065d02000041000000000101004b00000000010200190000000001006019000000400200043d00000000001204350000060d010000410000060d0320009c000000000102401900000040011002100000065e011001c70000182f0001042e000000380760008c000013530000413d00000020076002700000060d0860009c000000000806001900000000080720190000060d0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006470950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012ef0000413d0000000009050433000000000909004b000003310000613d00000000090804330000064809900197000000f80a70021000000000099a019f0000064c099001c700000000009804350000000307700210000000f80770008900000000067601cf0000002107500039000000000067043500000000060500190000136d0000013d0000001f0430018f0000000502300272000013110000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000130a0000413d000000000504004b0000131f0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000183000010430000000380760008c000013e60000413d00000020076002700000060d0860009c000000000806001900000000080720190000060d0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006470950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000133c0000413d0000000009050433000000000909004b000003310000613d00000000090804330000064809900197000000f80a70021000000000099a019f0000064c099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000014000000013d000006470750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a0000135c0000413d0000000008050433000000000808004b000003310000613d000000f80660021000000000080704330000064808800197000000000668019f000006150660016700000000006704350000000006050019000000400500043d000006470750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000013770000413d0000000009050433000000000909004b000003310000613d000000000907043300000648099001970000064d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000006150a000041000000000d9c004b000000000d000019000000000d0a80190000061509900197000006150ec00197000000000f9e004b000000000a00801900000000099e013f000006150990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006160db0009c0000010d0000213d0000000007b70049000000200cc00039000006150d000041000000000e7c004b000000000e000019000000000e0d20190000061507700197000006150cc00197000000000f7c004b000000000d00801900000000077c013f000006150770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000061609700197000000380790008c000014790000413d00000020079002700000060d0890009c000000000709a0190000060d0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006470b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013d00000413d000000000b070433000000000b0b004b000003310000613d000000000b0a0433000006480bb00197000000f80c800210000000000bbc019f0000064e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014920000013d000006470750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013ef0000413d0000000008050433000000000808004b000003310000613d000000f80660021000000000080704330000064808800197000000000668019f000006150660016700000000006704350000000006050019000000400500043d000006470750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000140a0000413d0000000009050433000000000909004b000003310000613d000000000907043300000648099001970000064d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000006150a000041000000000d9c004b000000000d000019000000000d0a80190000061509900197000006150ec00197000000000f9e004b000000000a00801900000000099e013f000006150990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006160db0009c0000010d0000213d0000000007b70049000000200cc00039000006150d000041000000000e7c004b000000000e000019000000000e0d20190000061507700197000006150cc00197000000000f7c004b000000000d00801900000000077c013f000006150770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000061609700197000000380790008c0000153c0000413d00000020079002700000060d0890009c000000000709a0190000060d0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006470b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000014630000413d000000000b070433000000000b0b004b000003310000613d000000000b0a0433000006480bb00197000000f80c800210000000000bbc019f0000064e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000015550000013d000000400700043d000006470a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014820000413d000000000a070433000000000a0a004b000003310000613d000000f809900210000000000a080433000006480aa001970000000009a9019f0000064d099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000006150a000041000000000b83004b000000000b000019000000000b0a80190000061508800197000006150c300197000000000d8c004b000000000a00801900000000088c013f000006150880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000006160480009c0000010d0000213d000000000489004900000020093000390000061503000041000000000a49004b000000000a000019000000000a0320190000061504400197000006150b900197000000000c4b004b000000000300801900000000044b013f000006150440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006420a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b000014ca0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000014c30000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b000014d90000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b000014d20000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b000014e80000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000014e10000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a800272000014f90000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000014f10000413d000000000b06004b000015080000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000015160000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b0000150f0000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000006160510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f0000060d010000410000060d0240009c00000000020100190000000002044019000000400220021000000000030304330000060d0430009c00000000030180190000006003300210000000000223019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f0000000102200190000012ae0000c13d0000010d0000013d000000400700043d000006470a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000015450000413d000000000a070433000000000a0a004b000003310000613d000000f809900210000000000a080433000006480aa001970000000009a9019f0000064d099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000006150a000041000000000b82004b000000000b000019000000000b0a80190000061508800197000006150c200197000000000d8c004b000000000a00801900000000088c013f000006150880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000006160480009c0000010d0000213d000000000489004900000020092000390000061502000041000000000a49004b000000000a000019000000000a0220190000061504400197000006150b900197000000000c4b004b000000000200801900000000044b013f000006150440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d00000020042000390000064f0a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b0000158d0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000015860000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b0000159c0000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b000015950000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000015ab0000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000015a40000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000015bc0000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000015b40000413d000000000b06004b000015cb0000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b000015d90000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000015d20000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000006160510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f0000060d010000410000060d0340009c00000000030100190000000003044019000000400330021000000000020204330000060d0420009c00000000020180190000006002200210000000000232019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f0000000102200190000012ae0000c13d0000010d0000013d00000000030100190000060d0100004100000000040004140000060d0540009c0000000001044019000000c001100210000000600220021000000000011200190000065f011000410000000002030019182e181f0000040f00000001022001900000160e0000613d000000000101043b000000000001042d0000000001000019000018300001043000000000030104330000000002320436000000000403004b0000161c0000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000016150000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000016320000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b0000162b0000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a000000000310003100000615010000410000005f0230008c000000000200001900000000020120190000061504300197000000000504004b0000000001008019000006150440009c000000000102c019000000000101004b0000167f0000613d00000002010003670000004402100370000000000202043b000006160420009c0000167f0000213d00000000032300490000061504000041000002600530008c000000000500001900000000050440190000061503300197000000000603004b000000000400a019000006150330009c00000000030500190000000003046019000000000303004b0000167f0000c13d0000000003000411000080010330008c0000167d0000c13d000000000300041200000617033001970000000004000410000000000343004b0000167d0000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b000016810000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d0000060d020000410000060d0310009c0000000001028019000000c0011002100000800102000039182e181a0000040f0000000103000029000300000001035500000060011002700001060d0010019d000000200130011a00000001012001950000000101200190000016990000613d00000000010000190000182f0001042e0000000001000019000018300001043000000000431200a900000000422300d9000000000112004b000016ae0000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b0000166e0000613d0000060d020000410000060d0410009c0000000001028019000000c0011002100000064f011001c7000080090200003900008001040000390000000005000019182e181a0000040f0000000003000415000000020330008a00000020033000c9000016760000013d000000400100043d000000640210003900000660030000410000000000320435000000440210003900000661030000410000000000320435000000240210003900000025030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000006510100004100000000001004350000001101000039000000040010043f00000652010000410000183000010430000000000101004b000016b70000613d000000000001042d000000400100043d000000640210003900000662030000410000000000320435000000440210003900000663030000410000000000320435000000240210003900000022030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000000000300003100000000041300490000001f0540008a0000000204000367000000000224034f000000000202043b0000061506000041000000000752004b0000000007000019000000000706401900000615055001970000061508200197000000000958004b000000000600a019000000000558013f000006150550009c00000000050700190000000005066019000000000505004b000016f60000613d0000000001120019000000000214034f000000000202043b000006160420009c000016f60000213d000000000323004900000020011000390000061504000041000000000531004b0000000005000019000000000504201900000615033001970000061506100197000000000736004b0000000004008019000000000336013f000006150330009c00000000030500190000000003046019000000000303004b000016f60000c13d000000000001042d000000000100001900001830000104300000000004010019000006640120009c0000172b0000813d0000003f01200039000000200500008a000000000551016f000000400100043d0000000005510019000000000615004b00000000060000190000000106004039000006160750009c0000172b0000213d00000001066001900000172b0000c13d000000400050043f00000000052104360000000006420019000000000336004b000017310000213d0000001f0320018f00000002044003670000000506200272000017190000613d000000000700001900000005087002100000000009850019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000017110000413d000000000703004b000017280000613d0000000506600210000000000464034f00000000066500190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000000022500190000000000020435000000000001042d000006510100004100000000001004350000004101000039000000040010043f0000065201000041000018300001043000000000010000190000183000010430000000400100043d000006650210009c0000173a0000813d0000002002100039000000400020043f0000000000010435000000000001042d000006510100004100000000001004350000004101000039000000040010043f000006520100004100001830000104300000000043020434000000410330008c000017930000c13d00000041032000390000000003030433000000ff0330018f0000001d0530008a000000030600008a000000000565004b000017a50000a13d000000400220003900000000050204330000000004040433000000400200043d000006670650009c000017b70000813d000000600620003900000000005604350000004005200039000000000045043500000020042000390000000000340435000000000012043500000000000004350000060d0100004100000000030004140000060d0430009c00000000030180190000060d0420009c00000000010240190000004001100210000000c002300210000000000112019f00000668011001c70000000102000039182e181f0000040f000000000301001900000060033002700000060d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000504400272000017750000613d00000000060000190000000507600210000000000871034f000000000808043b00000000008704350000000106600039000000000746004b0000176e0000413d000000000605004b000017830000613d00000003055002100000000504400210000000000604043300000000065601cf000000000656022f000000000741034f000000000707043b0000010005500089000000000757022f00000000055701cf000000000565019f0000000000540435000100000003001f00030000000103550000000102200190000017c80000613d000000000100043300000617011001970000000002000410000000000221004b00000000020000190000000102006039000000000101004b0000000001000019000000010100c039000000000112016f000000010110018f000000000001042d000000400100043d00000044021000390000066603000041000000000032043500000024021000390000001d030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400100043d00000044021000390000066a030000410000000000320435000000240210003900000016030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000440120003900000669030000410000000000310435000000240120003900000009030000390000000000310435000006230100004100000000001204350000000401200039000000200300003900000000003104350000060d010000410000060d0320009c0000000001024019000000400110021000000624011001c70000183000010430000000400200043d0000001f0430018f0000000503300272000017d50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000017cd0000413d000000000504004b000017e40000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000060d0100004100000001030000310000060d0430009c00000000030180190000060d0420009c000000000102401900000040011002100000006002300210000000000112019f00001830000104300000000001000411000080010110008c000017f20000613d000000000001042d000006510100004100000000001004350000000101000039000000040010043f00000652010000410000183000010430000000e0031000390000000202000367000000000332034f000000000303043b0000061703300198000018020000613d0000012001100039000000000112034f000000000101043b000018130000013d000000a003100039000000000332034f0000006004100039000000000442034f000000000404043b000000000503043b00000000634500a9000000000605004b0000180e0000613d00000000655300d9000000000445004b000018140000c13d0000012001100039000000000112034f000000000101043b000000000131001a000018140000413d000000000001042d000006510100004100000000001004350000001101000039000000040010043f000006520100004100001830000104300000181d002104210000000102000039000000000001042d0000000002000019000000000001042d00001822002104230000000102000039000000000001042d0000000002000019000000000001042d00001827002104210000000102000039000000000001042d0000000002000019000000000001042d0000182c002104230000000102000039000000000001042d0000000002000019000000000001042d0000182e000004320000182f0001042e000018300001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d3827000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f190100000000000000000000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39202bcce700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000002000000000000000000000000000000000000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f706575650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c0000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffffe05369676e6174757265206c656e67746820697320696e636f72726563740000007fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a10000000000000000000000000000000000000080000000000000000000000000496e76616c69642073000000000000000000000000000000000000000000000076206973206e656974686572203237206e6f72203238000000000000000000000000000000000000000000000000000000000000000000000000000000000000be97d52981e9620417d214917c2494759f680cd074b62767480f0dcc6034231a", - "deployedBytecode": "0x0004000000000002000b000000000002000000000301001900000060033002700000060d04300197000300000041035500020000000103550000060d0030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000002000031000000040120008c000000410000413d0000000201000367000000000301043b000000e0033002700000060f0430009c000000450000a13d000006100430009c000000a90000613d000006110430009c000000ea0000613d000006120330009c000000a60000c13d000000040220008a0000061503000041000000200420008c000000000400001900000000040340190000061505200197000000000605004b000000000300a019000006150550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000006160310009c0000010d0000213d00000000011200490000061502000041000002600310008c000000000300001900000000030240190000061501100197000000000401004b000000000200a019000006150110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d0000002001000039000001000010044300000120000004430000060e010000410000182f0001042e000000000102004b000000a60000c13d00000000010000190000182f0001042e000006130430009c000000eb0000613d000006140330009c000000a60000c13d000000040320008a0000061504000041000000600530008c000000000500001900000000050440190000061503300197000000000603004b000000000400a019000006150330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000006160430009c0000010d0000213d000000040530003900000000045200490000061506000041000002600740008c000000000700001900000000070640190000061504400197000000000804004b000000000600a019000006150440009c00000000040700190000000004066019000000000404004b0000010d0000c13d0000000004000411000080010440008c000000430000c13d000000000400041200000617064001970000000004000410000000000646004b000000430000c13d0000022406300039000000000661034f0000000007320049000000230770008a000000000606043b0000061508000041000000000976004b000000000900001900000000090880190000061507700197000006150a600197000000000b7a004b000000000800801900000000077a013f000006150770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000006160760009c0000010d0000213d000000000762004900000020025000390000061508000041000000000972004b000000000900001900000000090820190000061507700197000006150a200197000000000b7a004b000000000800801900000000077a013f000006150770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000062301000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000063b01000041000000c40010043f0000063c01000041000000e40010043f0000063a010000410000183000010430182e17ee0000040f00000000010000190000182f0001042e000000040320008a0000061504000041000000600630008c000000000600001900000000060440190000061503300197000000000703004b000000000400a019000006150330009c00000000030600190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000703043b000006160370009c0000010d0000213d000000040670003900000000036200490000061504000041000002600830008c000000000800001900000000080440190000061503300197000000000903004b000000000400a019000006150330009c00000000030800190000000003046019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d000000000300041200000617033001970000000004000410000000000343004b000000430000c13d0000012403700039000000000331034f0000004404700039000000000441034f000000000404043b0000061704400197000000000303043b000006180830009c000001310000413d000000440150003900000622020000410000000000210435000000240150003900000008020000390000000000210435000006230100004100000000001504350000000401500039000000200200003900000000002104350000060d010000410000060d0250009c0000000001054019000000400110021000000624011001c70000183000010430182e16390000040f000000040320008a0000061504000041000000600530008c000000000500001900000000050440190000061503300197000000000603004b000000000400a019000006150330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000b00000003001d000006160330009c0000010d0000213d0000000b030000290000000403300039000a00000003001d00000000023200490000061503000041000002600420008c000000000400001900000000040340190000061502200197000000000502004b000000000300a019000006150220009c00000000020400190000000002036019000000000202004b0000010f0000613d000000000100001900001830000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d000000000100041200000617011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d00000020031000390000063d0400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b00000024041000390000000000340435000000240300003900000000003104350000063e0310009c0000015e0000413d000006510100004100000000001004350000004101000039000000040010043f00000652010000410000183000010430000001c405700039000000000551034f0000000007720049000000230770008a000000000505043b0000061508000041000000000975004b000000000900001900000000090880190000061507700197000006150a500197000000000b7a004b000000000800801900000000077a013f000006150770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005650019000000000151034f000000000601043b000006160160009c0000010d0000213d000000000162004900000020075000390000061502000041000000000517004b0000000005000019000000000502201900000615011001970000061508700197000000000918004b0000000002008019000000000118013f000006150110009c00000000010500190000000001026019000000000101004b0000010d0000c13d0000000001000414000006190210009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f0000000004010433000006190540009c000001740000413d00000623020000410000000000230435000000a402100039000006220400004100000000004204350000008402100039000000080400003900000000004204350000006401100039000000200200003900000000002104350000060d010000410000060d0230009c0000000001034019000000400110021000000624011001c70000183000010430000000c0022002100000061f0220019700000040011002100000063f011000410000064001100197000000000112019f00000060024002100000064102200197000000000121019f00000642011001c700008003020000390000000003000019000000000400001900000000050000190000000006000019182e181a0000040f000300000001035500000060011002700001060d0010019d0000060d041001970000003f014000390000064305100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000006160630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001022001900000025e0000613d0000000901000029000000000101004b000012b00000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b000002e50000c13d0000000702000029000000000121034f000000000101043b000000800210008c0000031a0000413d0000008002100270000006490310009c000000000201a019000006490310009c0000000003000019000000100300203900000008043001bf000006160520009c00000000030420190000004004200270000006160520009c000000000204201900000004043001bf0000060d0520009c000000000304201900000020042002700000060d0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b000003310000613d00000000040304330000064804400197000000f805200210000000000445019f0000064a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000090200002900000021022000390000000000120435000004740000013d000000000221034f000000000202043b0000061a02200197000006250720009c000002680000c13d000000430260008c000002970000213d0000062301000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000063801000041000000c40010043f0000063901000041000000e40010043f0000063a0100004100001830000104300000000202000367000080060540008c00000000050000190000024b0000c13d000000040560008c00000000050000190000024b0000413d000000000872034f0000000105000039000000000808043b0000061a088001970000061b0980009c0000024a0000613d0000061c0980009c0000024a0000613d0000061d0980009c0000024a0000613d0000061e0580009c00000000050000190000000105006039000000010550018f000000000803004b000002740000c13d000000000306004b000002d00000c13d000000000300003100000620060000410000062107000041000000000505004b00000000050600190000000005076019000000c0011002100000061f01100197000000000115019f0000060d0330019700000000023203df00000000011203af0000000002040019182e18240000040f000002800000013d00000000010104330000060d020000410000060d0410009c00000000010280190000060d0430009c000000000203401900000040022002100000006001100210000000000121019f0000183000010430000006260120009c000000430000613d0000062301000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000062701000041000000c40010043f00000628010000410000183000010430000000000806004b000002d90000c13d00000000060000310000060d0660019700000000026203df000000c0011002100000061f0110019700000620011001c700000000011203af00008009020000390000000006000019182e18240000040f0003000000010355000000000301001900000060033002700001060d0030019d0000060d033001970000000102200190000002b50000613d182e17330000040f0000000002010019000000400100043d000b00000001001d182e16230000040f0000000b0400002900000000014100490000060d020000410000060d0310009c00000000010280190000060d0340009c000000000204401900000040022002100000006001100210000000000121019f0000182f0001042e0000002402500039000000000221034f000000000202043b000b00000002001d000006170220009c0000010d0000213d000000e402300039000000000221034f0000004403500039000000000131034f000000000101043b000a00000001001d000000000102043b0000062902000041000000800020043f0000061702400197000800000002001d000000840020043f0000061701100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c000003930000c13d0000000103000031000000200130008c00000020040000390000000004034019000003bf0000013d0000001f0430018f0000000502300272000002c00000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000002b90000413d000000000504004b000002ce0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000183000010430000000000376001a0000060d06700197000002df0000413d0000000007000031000000000837004b000002df0000413d000000000262034f0000000003370049000002500000013d000000000676001a0000060d07700197000002df0000413d0000000008000031000000000968004b000003e60000813d000006510100004100000000001004350000001101000039000000040010043f00000652010000410000183000010430000000710320008c000003370000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d00000000044200190000061505000041000000000643004b0000000006000019000000000605801900000615044001970000061507300197000000000847004b0000000005008019000000000447013f000006150440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004430019000000000141034f000000000301043b000006160130009c0000010d0000213d000000000132004900000020044000390000061502000041000000000514004b0000000005000019000000000502201900000615011001970000061506400197000000000716004b0000000002008019000000000116013f000006150110009c00000000010500190000000001026019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000006380000c13d0000000003000031000006440000013d000000400200043d000900000002001d000006470220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000003260000413d00000009030000290000000003030433000000000303004b0000046b0000c13d000006510100004100000000001004350000003201000039000000040010043f00000652010000410000183000010430000000020120008c000003e90000c13d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005a60000413d0000008001200270000006490320009c000000000102a019000006490320009c0000000003000019000000100300203900000008043001bf000006160510009c00000000030420190000004004100270000006160510009c000000000104201900000004043001bf0000060d0510009c000000000304201900000020041002700000060d0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003800000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003780000413d000000000500004b000003820000613d0000000005010433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000005c30000013d0000060d020000410000060d0310009c0000000001028019000000c0011002100000062a011001c70000000b02000029182e181f0000040f000000000301001900000060033002700000060d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003ac0000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003a40000413d000000000705004b000003bb0000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000004450000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000062b030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000062c05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c000005450000c13d00000001020000390000000101000031000005560000013d000000000272034f0000000006680049000002770000013d000000010120008c000004c50000c13d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d000000000201043b000000800120008c000006580000413d0000008001200270000006490320009c000000000102a019000006490320009c0000000003000019000000100300203900000008043001bf000006160510009c00000000030420190000004004100270000006160510009c000000000104201900000004043001bf0000060d0510009c000000000304201900000020041002700000060d0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004320000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000042a0000413d000000000500004b000004340000613d0000000005010433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000006750000013d000000400200043d0000001f0430018f0000000503300272000004520000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000044a0000413d000000000504004b000004610000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000060d0100004100000001030000310000060d0430009c00000000030180190000060d0420009c000000000102401900000040011002100000006002300210000000000112019f0000183000010430000000f8031002100000061504000041000000000101004b0000000001030019000000000104601900000000030204330000064803300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c000004d70000413d0000008001200270000006490320009c000000000102a019000006490320009c0000000003000019000000100300203900000008043001bf000006160510009c00000000030420190000004004100270000006160510009c000000000104201900000004043001bf0000060d0510009c000000000304201900000020041002700000060d0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004b20000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004aa0000413d000000000500004b000004b40000613d0000000005010433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000004f40000013d000000400100043d000000440210003900000644030000410000000000320435000000240210003900000017030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400100043d000006470310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004e10000413d0000000004010433000000000404004b000003310000613d000000f8042002100000061505000041000000000202004b0000000002040019000000000205601900000000040304330000064804400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c000006c50000413d0000008002300270000006490430009c000000000203a019000006490430009c0000000004000019000000100400203900000008054001bf000006160620009c00000000040520190000004005200270000006160620009c000000000205201900000004054001bf0000060d0620009c000000000405201900000020052002700000060d0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006160750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005320000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000052a0000413d000000000600004b000005340000613d0000000006020433000000000606004b000003310000613d00000000060504330000064806600197000000f807400210000000000667019f0000064a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006e20000013d0000060d040000410000060d0530009c000000000304801900000060033002100000004002200210000000000223019f0000060d0310009c0000000001048019000000c001100210000000000112019f0000000b02000029182e181a0000040f000000010220018f000300000001035500000060011002700001060d0010019d0000060d011001970000006003000039000700000003001d000000000301004b000005760000c13d00000007010000290000000031010434000300000003001d000000000202004b000006130000c13d000000000201004b000007760000c13d000000400300043d000b00000003001d0000062301000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000501000029182e16100000040f0000000b0400002900000000014100490000060d020000410000060d0310009c00000000010280190000060d0340009c000000000204401900000040022002100000006001100210000000000121019f0000183000010430000006160310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000005960000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b0000058e0000413d000000000604004b0000055a0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000055a0000013d000000400100043d000006470310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005b00000413d0000000004010433000000000404004b000003310000613d000000f8042002100000061505000041000000000202004b0000000002040019000000000205601900000000040304330000064804400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000009650000413d0000008002300270000006490430009c000000000203a019000006490430009c0000000004000019000000100400203900000008054001bf000006160620009c00000000040520190000004005200270000006160620009c000000000205201900000004054001bf0000060d0620009c000000000405201900000020052002700000060d0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006160750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000006000000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005f80000413d000000000600004b000006020000613d0000000006020433000000000606004b000003310000613d00000000060504330000064806600197000000f807400210000000000667019f0000064a0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000009820000013d000000000201004b00000a600000c13d0000062d0100004100000000001004390000000b0100002900000004001004430000060d0100004100000000020004140000060d0320009c0000000001024019000000c0011002100000062e011001c70000800202000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000000000101004b00000a5c0000c13d000000400100043d00000044021000390000063703000041000000000032043500000024021000390000001d030000390000000000320435000006230200004100000000002104350000000402100039000000060300002900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c700001830000104300000060d054001970000000004430019000000000334004b000000000300001900000001030040390000000103300190000002df0000c13d0000000003000031000000000643004b000002df0000413d000000000252034f0000000003430049000006190410009c000007810000413d000000400100043d000000440210003900000622030000410000000000320435000000240210003900000008030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400100043d000006470310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000006620000413d0000000004010433000000000404004b000003310000613d000000f8042002100000061505000041000000000202004b0000000002040019000000000205601900000000040304330000064804400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c000009ee0000413d0000008003200270000006490420009c000000000302a019000006490420009c0000000004000019000000100400203900000008054001bf000006160630009c00000000040520190000004005300270000006160630009c000000000305201900000004054001bf0000060d0630009c000000000405201900000020053002700000060d0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000006160750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006b20000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000006aa0000413d000000000600004b000006b40000613d0000000006030433000000000606004b000003310000613d00000000060504330000064806600197000000f807400210000000000667019f0000064a0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c00000000020020190000002104300039000000000024043500000a0b0000013d000000400200043d000006470420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006cf0000413d0000000005020433000000000505004b000003310000613d000000f8053002100000061506000041000000000303004b0000000003050019000000000306601900000000050404330000064805500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006f00000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b000006e90000413d000000000143001900000000000104350000000004020433000000000504004b000006fd0000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b000006f60000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000006160220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f000006470110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000064b0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000be00000413d0000008002100270000006490310009c000000000201a019000006490310009c0000000003000019000000100300203900000008043001bf000006160520009c00000000030420190000004004200270000006160520009c000000000204201900000004043001bf0000060d0520009c000000000304201900000020042002700000060d0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000007610000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007590000413d000000000400004b000007630000613d00000005040000290000000004040433000000000404004b000003310000613d00000000040304330000064804400197000000f805200210000000000445019f0000064a0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000c000000013d0000060d0200004100000003040000290000060d0340009c000000000302001900000000030440190000060d0410009c000000000102801900000060011002100000004002300210000000000121019f00001830000104300000060d0330019700000000023203df000000c0011002100000061f0110019700000621011001c700000000011203af0000801002000039182e18290000040f000000000301001900000060033002700001060d0030019d0000060d0330019700030000000103550000000102200190000009d30000613d0000003f013000390000064301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006160510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000007ab0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007a30000413d000000000400004b000007ad0000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000007bd0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000007b50000413d000000000604004b000007cc0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c750000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b0000061506000041000000000753004b0000000007000019000000000706801900000615055001970000061508300197000000000958004b0000000006008019000000000558013f000006150550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000006160350009c0000010d0000213d0000000503500210000000000434004900000020061000390000061501000041000000000746004b0000000007000019000000000701201900000615044001970000061508600197000000000948004b0000000001008019000000000448013f000006150440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d000000200410003900000650055001980000080b0000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000008030000413d000000000200004b0000080d0000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000006160520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f0000060d020000410000060d0340009c00000000030200190000000003044019000000400330021000000000010104330000060d0410009c00000000010280190000006001100210000000000131019f00000000030004140000060d0430009c0000000002034019000000c002200210000000000112019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b0000061506000041000000000754004b0000000007000019000000000706801900000615055001970000061508400197000000000958004b0000000006008019000000000558013f000006150550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000001140019000000000313034f000000000303043b000006160430009c0000010d0000213d000000000232004900000020041000390000061501000041000000000524004b0000000005000019000000000501201900000615022001970000061506400197000000000726004b0000000001008019000000000226013f000006150220009c000000000105c019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000011ac0000c13d00000000030000310000060d0410009c000006460000213d0000060d0330019700000000023203df000000c0011002100000061f0110019700000621011001c700000000011203af0000801002000039182e18290000040f000000000301001900000060033002700001060d0030019d0000060d0330019700030000000103550000000102200190000013060000613d0000003f013000390000064301100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006160510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f0430003900000005044002720000088c0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000008840000413d000000000400004b0000088e0000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f00000005033002720000089e0000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008960000413d000000000604004b000008ad0000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c750000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000654030000410000000000320435000001c0030000390000000000310435000006550310009c0000012b0000213d000001e003100039000000400030043f0000060d030000410000060d0420009c0000000002038019000000400220021000000000010104330000060d0410009c00000000010380190000006001100210000000000121019f00000000020004140000060d0420009c0000000002038019000000c002200210000000000112019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b000006560300004100000000003204350000008003400039000000000013043500000060014000390000065703000041000000000031043500000040014000390000065803000041000000000031043500000080010000390000000000140435000006590140009c0000012b0000213d0000000904000029000000a001400039000000400010043f0000060d010000410000060d0320009c0000000002018019000000400220021000000000030404330000060d0430009c00000000030180190000006003300210000000000223019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d000000000301043b000000400100043d00000042021000390000000704000029000000000042043500000020021000390000065a0400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006330310009c0000012b0000213d0000008003100039000000400030043f0000060d030000410000060d0420009c0000000002038019000000400220021000000000010104330000060d0410009c00000000010380190000006001100210000000000121019f00000000020004140000060d0420009c0000000002038019000000c002200210000000000112019f0000064f011001c70000801002000039182e181f0000040f0000000102200190000012ae0000c13d0000010d0000013d000000400200043d000006470420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a0000096f0000413d0000000005020433000000000505004b000003310000613d000000f8053002100000061506000041000000000303004b0000000003050019000000000306601900000000050404330000064805500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a9d0000413d0000008004300270000006490530009c000000000403a019000006490530009c0000000005000019000000100500203900000008065001bf000006160740009c00000000050620190000004006400270000006160740009c000000000406201900000004065001bf0000060d0740009c000000000506201900000020064002700000060d0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006160860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000009c00000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000009b80000413d000000000700004b000009c20000613d0000000007040433000000000707004b000003310000613d00000000070604330000064807700197000000f808500210000000000778019f0000064a0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000aba0000013d0000001f0430018f0000000502300272000009de0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000009d70000413d000000000504004b000009ec0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000183000010430000000400300043d000006470430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000009f80000413d0000000005030433000000000505004b000003310000613d000000f8052002100000061506000041000000000202004b0000000002050019000000000206601900000000050404330000064805500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b720000413d0000008004200270000006490520009c000000000402a019000006490520009c0000000005000019000000100500203900000008065001bf000006160740009c00000000050620190000004006400270000006160740009c000000000406201900000004065001bf0000060d0740009c000000000506201900000020064002700000060d0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006160860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200000a490000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00000a410000413d000000000700004b00000a4b0000613d0000000007040433000000000707004b000003310000613d00000000070604330000064807700197000000f808500210000000000778019f0000064a0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b8f0000013d00000007010000290000000001010433000000000201004b00000a8a0000613d0000061502000041000000200310008c000000000300001900000000030240190000061501100197000000000401004b000000000200a019000006150110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a8a0000c13d000000400100043d00000064021000390000063503000041000000000032043500000044021000390000063603000041000000000032043500000024021000390000002a030000390000000000320435000006230200004100000000002104350000000402100039000000060300002900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000000400300043d00000024013000390000000902000029000000000021043500000629010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000b0b0000c13d0000000103000031000000200130008c0000002004000039000000000403401900000b3e0000013d000000400400043d000006470540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000aa70000413d0000000006040433000000000606004b000003310000613d000000f8063002100000061507000041000000000303004b0000000003060019000000000307601900000000060504330000064806600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c870000413d0000008005300270000006490630009c000000000503a019000006490630009c0000000006000019000000100600203900000008076001bf000006160850009c00000000060720190000004007500270000006160850009c000000000507201900000004076001bf0000060d0850009c000000000607201900000020075002700000060d0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006160970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000af80000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000af00000413d000000000800004b00000afa0000613d0000000008050433000000000808004b000003310000613d00000000080704330000064808800197000000f809600210000000000889019f0000064a0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000ca40000013d0000060d020000410000060d0310009c000000000102801900000007040000290000060d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000062f011001c70000000b02000029182e181f0000040f000000070a000029000000000301001900000060033002700000060d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000b2a0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000b220000413d000000000705004b00000b3a0000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000c4f0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000006160410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000cf50000c13d00000044021000390000000a03000029000000000032043500000020021000390000062b03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006330310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006340310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000062c040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000e050000c13d0000000102000039000000010100003100000e180000013d000000400400043d000006470540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b7c0000413d0000000006040433000000000606004b000003310000613d000000f8062002100000061507000041000000000202004b0000000002060019000000000207601900000000060504330000064806600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000d090000413d0000008005200270000006490620009c000000000502a019000006490620009c0000000006000019000000100600203900000008076001bf000006160850009c00000000060720190000004007500270000006160850009c000000000507201900000004076001bf0000060d0850009c000000000607201900000020075002700000060d0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006160970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000bcd0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000bc50000413d000000000800004b00000bcf0000613d0000000008050433000000000808004b000003310000613d00000000080704330000064808800197000000f809600210000000000889019f0000064a0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000d260000013d000000400200043d000500000002001d000006470220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000bec0000413d00000005030000290000000003030433000000000303004b000003310000613d000000f8031002100000061504000041000000000101004b0000000001030019000000000104601900000000030204330000064803300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d00000000044300190000061505000041000000000641004b0000000006000019000000000605801900000615044001970000061507100197000000000847004b0000000005008019000000000447013f000006150440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000006160510009c0000010d0000213d000000000513004900000020034000390000061504000041000000000653004b0000000006000019000000000604201900000615055001970000061507300197000000000857004b0000000004008019000000000557013f000006150550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000f370000c13d000000000132034f000000000101043b000000010200008a0000061503000041000000000221004b000000000200001900000000020320190000061501100197000006150410009c00000000030080190000061501100167000006150110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010950000c13d000000400100043d000400000001001d000006470110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000064a02000041000000000021043500000001010000390000000000130435000010950000013d000000400200043d0000001f0430018f000000050330027200000c5c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c540000413d000000000504004b00000c6b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000060d0100004100000001030000310000060d0430009c00000000030180190000060d0420009c000000000102401900000040011002100000006002300210000000000112019f0000183000010430000000400100043d00000044021000390000065303000041000000000032043500000024021000390000001f030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400500043d000006470650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c910000413d0000000007050433000000000707004b000003310000613d000000f8073002100000061508000041000000000303004b0000000003070019000000000308601900000000070604330000064807700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d870000413d0000008006300270000006490730009c000000000603a019000006490730009c0000000007000019000000100700203900000008087001bf000006160960009c00000000070820190000004008600270000006160960009c000000000608201900000004087001bf0000060d0960009c000000000708201900000020086002700000060d0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000006160a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000ce20000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000cda0000413d000000000900004b00000ce40000613d0000000009060433000000000909004b000003310000613d00000000090804330000064809900197000000f80a70021000000000099a019f0000064a0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000da40000013d000000640210003900000630030000410000000000320435000000440210003900000631030000410000000000320435000000240210003900000036030000390000000000320435000006230200004100000000002104350000000402100039000000060300002900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000000400500043d000006470650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000d130000413d0000000007050433000000000707004b000003310000613d000000f8072002100000061508000041000000000202004b0000000002070019000000000208601900000000070604330000064807700197000000000227019f0000000000260435000000400600043d000006470260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000064b0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e680000413d0000008007200270000006490820009c000000000702a019000006490820009c0000000008000019000000100800203900000008098001bf000006160a70009c00000000080920190000004009700270000006160a70009c000000000709201900000004098001bf0000060d0a70009c000000000809201900000020097002700000060d0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000006160b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d740000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d6c0000413d000000000a00004b00000d760000613d000000000a070433000000000a0a004b000003310000613d000000000a090433000006480aa00197000000f80b800210000000000aab019f0000064a0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e850000013d000000400600043d000006470760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d910000413d0000000008060433000000000808004b000003310000613d000000f8083002100000061509000041000000000303004b0000000003080019000000000309601900000000080704330000064808800197000000000338019f0000000000370435000000400700043d000006470370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000064b090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f9a0000413d0000008008300270000006490930009c000000000803a019000006490930009c00000000090000190000001009002039000000080a9001bf000006160b80009c00000000090a2019000000400a800270000006160b80009c00000000080a2019000000040a9001bf0000060d0b80009c00000000090a2019000000200a8002700000060d0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000006160ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000df20000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000dea0000413d000000000b00004b00000df40000613d000000000b080433000000000b0b004b000003310000613d000000000b0a0433000006480bb00197000000f80c900210000000000bbc019f0000064a0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000fb70000013d0000060d040000410000060d0520009c000000000204801900000040022002100000060d0530009c00000000030480190000006003300210000000000223019f0000060d0310009c0000000001048019000000c001100210000000000112019f0000000b02000029182e181a0000040f000000010220018f000300000001035500000060011002700001060d0010019d0000060d011001970000006003000039000900000003001d000000000301004b00000e380000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f6d0000c13d000000000201004b000011640000c13d000000400300043d000b00000003001d0000062301000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a01000029182e16100000040f0000000b0400002900000000014100490000060d020000410000060d0310009c00000000010280190000060d0340009c000000000204401900000040022002100000006001100210000000000121019f0000183000010430000006160310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006160530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e580000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000e500000413d000000000604004b00000e1c0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000e1c0000013d000000400700043d000006470870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e720000413d0000000009070433000000000909004b000003310000613d000000f809200210000006150a000041000000000202004b000000000209001900000000020a601900000000090804330000064809900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e920000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e8b0000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000ea10000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e9a0000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000eb00000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000ea90000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000ebf0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000eb80000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000ece0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000ec70000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000edd0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000ed60000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000006160450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000006150a000041000000000b96004b000000000b000019000000000b0a80190000061509900197000006150c600197000000000d9c004b000000000a00801900000000099c013f000006150990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006160a60009c0000010d0000213d000000000a68004900000020089000390000061509000041000000000ba8004b000000000b000019000000000b092019000006150aa00197000006150c800197000000000dac004b0000000009008019000000000aac013f000006150aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012d40000c13d000000000687034f000000000606043b000000010700008a0000061508000041000000000776004b000000000700001900000000070820190000061506600197000006150960009c00000000080080190000061506600167000006150660009c00000000070860190000006006000039000000000707004b0000136d0000c13d000006470650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000064a0700004100000000007604350000000106000039000000000065043500000000060500190000136d0000013d000000380210008c000010780000413d00000020021002700000060d0310009c000000000301001900000000030220190000060d0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000006470440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f550000413d00000004040000290000000004040433000000000404004b000003310000613d00000000040304330000064804400197000000f805200210000000000445019f0000064c044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010950000013d000000000201004b00000f840000c13d0000062d0100004100000000001004390000000b0100002900000004001004430000060d0100004100000000020004140000060d0320009c0000000001024019000000c0011002100000062e011001c70000800202000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000000000101004b000006260000613d00000009010000290000000001010433000000000201004b000000430000613d0000061502000041000000200310008c000000000300001900000000030240190000061501100197000000000401004b000000000200a019000006150110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a750000613d000000430000013d000000400800043d000006470980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000fa40000413d000000000a080433000000000a0a004b000003310000613d000000f80a300210000006150b000041000000000303004b00000000030a001900000000030b6019000000000a090433000006480aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000fc40000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000fbd0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000fd30000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000fcc0000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000fe20000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000fdb0000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000ff10000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000fea0000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b000010000000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000ff90000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b0000100f0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b000010080000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b0000101e0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b000010170000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000006160450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000006150a000041000000000b96004b000000000b000019000000000b0a80190000061509900197000006150c600197000000000d9c004b000000000a00801900000000099c013f000006150990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006160a60009c0000010d0000213d000000000a68004900000020089000390000061509000041000000000ba8004b000000000b000019000000000b092019000006150aa00197000006150c800197000000000dac004b0000000009008019000000000aac013f000006150aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000013210000c13d000000000687034f000000000606043b000000010700008a0000061508000041000000000776004b000000000700001900000000070820190000061506600197000006150960009c00000000080080190000061506600167000006150660009c00000000070860190000006006000039000000000707004b000014000000c13d000006470650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000064a070000410000000000760435000000010600003900000000006504350000000006050019000014000000013d000000400200043d000400000002001d000006470220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010840000413d00000004030000290000000003030433000000000303004b000003310000613d000000f80110021000000000030204330000064803300197000000000113019f0000061501100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b0000110a0000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b0000061504000041000000000659004b0000000006000019000000000604801900000615055001970000061507900197000000000857004b0000000004008019000000000557013f000006150550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000006160a20009c0000010d0000213d00000000032300490000002009900039000006150a000041000000000b39004b000000000b000019000000000b0a201900000615033001970000061509900197000000000c39004b000000000a008019000000000339013f000006150330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000061602200197000000380320008c000011b50000413d00000020032002700000060d0420009c000000000402001900000000040320190000060d0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d000006470560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010f40000413d0000000005060433000000000505004b000003310000613d00000000050404330000064805500197000000f807300210000000000557019f0000064e055001c700000000005404350000000303300210000000f80330008900000000023201cf00000021036000390000000000230435000011cf0000013d000006450100004100000000001004390000060d0100004100000000020004140000060d0320009c0000000001024019000000c00110021000000646011001c70000800b02000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000116f0000413d0000008002100270000006490310009c000000000201a019000006490310009c0000000003000019000000100300203900000008043001bf000006160520009c00000000030420190000004004200270000006160520009c000000000204201900000004043001bf0000060d0520009c000000000304201900000020042002700000060d0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000006160640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000442043600000021053000390000000505500272000011510000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000011490000413d000000000500004b000011530000613d0000000005020433000000000505004b000003310000613d00000000050404330000064805500197000000f806300210000000000556019f0000064a0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c0000000001002019000000210320003900000000001304350000118c0000013d0000060d0200004100000008040000290000060d0340009c000000000302001900000000030440190000060d0410009c000000000102801900000060011002100000004002300210000000000121019f0000183000010430000000400200043d000006470320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011790000413d0000000004020433000000000404004b000003310000613d000000f8041002100000061505000041000000000101004b0000000001040019000000000105601900000000040304330000064804400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011990000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b000011920000413d00000000024300190000065b0400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000006160420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000109d0000013d000000000343001a0000060d04400197000002df0000413d0000000005000031000000000635004b000002df0000413d000000000242034f0000000003350049000008600000013d000000400600043d000006470360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a000011bf0000413d0000000004060433000000000404004b000003310000613d000000f80220021000000000040304330000064804400197000000000242019f0000064d02200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b0000061507000041000000000854004b0000000008000019000000000807801900000615055001970000061509400197000000000a59004b0000000007008019000000000559013f000006150550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000006160340009c0000010d0000213d000000000242004900000020055000390000061503000041000000000725004b0000000007000019000000000703201900000615022001970000061508500197000000000928004b0000000003008019000000000228013f000006150220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000012070000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000012000000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000012180000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012100000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b000012290000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012210000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b0000123a0000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012320000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b0000124b0000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012430000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b0000125c0000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012540000413d0000000008870019000000000008043500000000066700190000001f0740018f0000002008600039000000020550036700000005094002720000126d0000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012650000413d000000000a07004b0000127c0000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b0000128a0000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012830000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000006160510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f0000060d010000410000060d0430009c0000000003018019000000400330021000000000020204330000060d0420009c00000000020180190000006002200210000000000232019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f00000001022001900000010d0000613d000000000101043b000900000001001d0000000a01000029182e17f80000040f0000065c02000041000000000020043900000008020000290000000400200443000800000001001d0000800a010000390000002402000039182e15ff0000040f0000000802000029000000000112004b0000000001000019000000010100a039182e16b40000040f0000000b01000029000001e4021000390000000a01000029182e16cc0000040f0000000003000031182e16f80000040f00000000020100190000000901000029182e17400000040f0000065d02000041000000000101004b00000000010200190000000001006019000000400200043d00000000001204350000060d010000410000060d0320009c000000000102401900000040011002100000065e011001c70000182f0001042e000000380760008c000013530000413d00000020076002700000060d0860009c000000000806001900000000080720190000060d0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006470950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012ef0000413d0000000009050433000000000909004b000003310000613d00000000090804330000064809900197000000f80a70021000000000099a019f0000064c099001c700000000009804350000000307700210000000f80770008900000000067601cf0000002107500039000000000067043500000000060500190000136d0000013d0000001f0430018f0000000502300272000013110000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000130a0000413d000000000504004b0000131f0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000183000010430000000380760008c000013e60000413d00000020076002700000060d0860009c000000000806001900000000080720190000060d0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006470950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000133c0000413d0000000009050433000000000909004b000003310000613d00000000090804330000064809900197000000f80a70021000000000099a019f0000064c099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000014000000013d000006470750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a0000135c0000413d0000000008050433000000000808004b000003310000613d000000f80660021000000000080704330000064808800197000000000668019f000006150660016700000000006704350000000006050019000000400500043d000006470750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000013770000413d0000000009050433000000000909004b000003310000613d000000000907043300000648099001970000064d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000006150a000041000000000d9c004b000000000d000019000000000d0a80190000061509900197000006150ec00197000000000f9e004b000000000a00801900000000099e013f000006150990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006160db0009c0000010d0000213d0000000007b70049000000200cc00039000006150d000041000000000e7c004b000000000e000019000000000e0d20190000061507700197000006150cc00197000000000f7c004b000000000d00801900000000077c013f000006150770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000061609700197000000380790008c000014790000413d00000020079002700000060d0890009c000000000709a0190000060d0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006470b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013d00000413d000000000b070433000000000b0b004b000003310000613d000000000b0a0433000006480bb00197000000f80c800210000000000bbc019f0000064e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014920000013d000006470750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013ef0000413d0000000008050433000000000808004b000003310000613d000000f80660021000000000080704330000064808800197000000000668019f000006150660016700000000006704350000000006050019000000400500043d000006470750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000140a0000413d0000000009050433000000000909004b000003310000613d000000000907043300000648099001970000064d099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000006150a000041000000000d9c004b000000000d000019000000000d0a80190000061509900197000006150ec00197000000000f9e004b000000000a00801900000000099e013f000006150990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006160db0009c0000010d0000213d0000000007b70049000000200cc00039000006150d000041000000000e7c004b000000000e000019000000000e0d20190000061507700197000006150cc00197000000000f7c004b000000000d00801900000000077c013f000006150770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000061609700197000000380790008c0000153c0000413d00000020079002700000060d0890009c000000000709a0190000060d0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006470b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000014630000413d000000000b070433000000000b0b004b000003310000613d000000000b0a0433000006480bb00197000000f80c800210000000000bbc019f0000064e0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000015550000013d000000400700043d000006470a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014820000413d000000000a070433000000000a0a004b000003310000613d000000f809900210000000000a080433000006480aa001970000000009a9019f0000064d099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000006150a000041000000000b83004b000000000b000019000000000b0a80190000061508800197000006150c300197000000000d8c004b000000000a00801900000000088c013f000006150880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000006160480009c0000010d0000213d000000000489004900000020093000390000061503000041000000000a49004b000000000a000019000000000a0320190000061504400197000006150b900197000000000c4b004b000000000300801900000000044b013f000006150440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006420a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b000014ca0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000014c30000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b000014d90000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b000014d20000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b000014e80000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000014e10000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a800272000014f90000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000014f10000413d000000000b06004b000015080000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000015160000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b0000150f0000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000006160510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f0000060d010000410000060d0240009c00000000020100190000000002044019000000400220021000000000030304330000060d0430009c00000000030180190000006003300210000000000223019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f0000000102200190000012ae0000c13d0000010d0000013d000000400700043d000006470a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000015450000413d000000000a070433000000000a0a004b000003310000613d000000f809900210000000000a080433000006480aa001970000000009a9019f0000064d099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000006150a000041000000000b82004b000000000b000019000000000b0a80190000061508800197000006150c200197000000000d8c004b000000000a00801900000000088c013f000006150880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000006160480009c0000010d0000213d000000000489004900000020092000390000061502000041000000000a49004b000000000a000019000000000a0220190000061504400197000006150b900197000000000c4b004b000000000200801900000000044b013f000006150440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d00000020042000390000064f0a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b0000158d0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000015860000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b0000159c0000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b000015950000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000015ab0000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000015a40000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000015bc0000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000015b40000413d000000000b06004b000015cb0000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b000015d90000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000015d20000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000006160510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f0000060d010000410000060d0340009c00000000030100190000000003044019000000400330021000000000020204330000060d0420009c00000000020180190000006002200210000000000232019f00000000030004140000060d0430009c0000000001034019000000c001100210000000000121019f0000064f011001c70000801002000039182e181f0000040f0000000102200190000012ae0000c13d0000010d0000013d00000000030100190000060d0100004100000000040004140000060d0540009c0000000001044019000000c001100210000000600220021000000000011200190000065f011000410000000002030019182e181f0000040f00000001022001900000160e0000613d000000000101043b000000000001042d0000000001000019000018300001043000000000030104330000000002320436000000000403004b0000161c0000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000016150000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000016320000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b0000162b0000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a000000000310003100000615010000410000005f0230008c000000000200001900000000020120190000061504300197000000000504004b0000000001008019000006150440009c000000000102c019000000000101004b0000167f0000613d00000002010003670000004402100370000000000202043b000006160420009c0000167f0000213d00000000032300490000061504000041000002600530008c000000000500001900000000050440190000061503300197000000000603004b000000000400a019000006150330009c00000000030500190000000003046019000000000303004b0000167f0000c13d0000000003000411000080010330008c0000167d0000c13d000000000300041200000617033001970000000004000410000000000343004b0000167d0000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b000016810000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d0000060d020000410000060d0310009c0000000001028019000000c0011002100000800102000039182e181a0000040f0000000103000029000300000001035500000060011002700001060d0010019d000000200130011a00000001012001950000000101200190000016990000613d00000000010000190000182f0001042e0000000001000019000018300001043000000000431200a900000000422300d9000000000112004b000016ae0000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b0000166e0000613d0000060d020000410000060d0410009c0000000001028019000000c0011002100000064f011001c7000080090200003900008001040000390000000005000019182e181a0000040f0000000003000415000000020330008a00000020033000c9000016760000013d000000400100043d000000640210003900000660030000410000000000320435000000440210003900000661030000410000000000320435000000240210003900000025030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000006510100004100000000001004350000001101000039000000040010043f00000652010000410000183000010430000000000101004b000016b70000613d000000000001042d000000400100043d000000640210003900000662030000410000000000320435000000440210003900000663030000410000000000320435000000240210003900000022030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000632011001c70000183000010430000000000300003100000000041300490000001f0540008a0000000204000367000000000224034f000000000202043b0000061506000041000000000752004b0000000007000019000000000706401900000615055001970000061508200197000000000958004b000000000600a019000000000558013f000006150550009c00000000050700190000000005066019000000000505004b000016f60000613d0000000001120019000000000214034f000000000202043b000006160420009c000016f60000213d000000000323004900000020011000390000061504000041000000000531004b0000000005000019000000000504201900000615033001970000061506100197000000000736004b0000000004008019000000000336013f000006150330009c00000000030500190000000003046019000000000303004b000016f60000c13d000000000001042d000000000100001900001830000104300000000004010019000006640120009c0000172b0000813d0000003f01200039000000200500008a000000000551016f000000400100043d0000000005510019000000000615004b00000000060000190000000106004039000006160750009c0000172b0000213d00000001066001900000172b0000c13d000000400050043f00000000052104360000000006420019000000000336004b000017310000213d0000001f0320018f00000002044003670000000506200272000017190000613d000000000700001900000005087002100000000009850019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000017110000413d000000000703004b000017280000613d0000000506600210000000000464034f00000000066500190000000303300210000000000706043300000000073701cf000000000737022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000373019f000000000036043500000000022500190000000000020435000000000001042d000006510100004100000000001004350000004101000039000000040010043f0000065201000041000018300001043000000000010000190000183000010430000000400100043d000006650210009c0000173a0000813d0000002002100039000000400020043f0000000000010435000000000001042d000006510100004100000000001004350000004101000039000000040010043f000006520100004100001830000104300000000043020434000000410330008c000017930000c13d00000041032000390000000003030433000000ff0330018f0000001d0530008a000000030600008a000000000565004b000017a50000a13d000000400220003900000000050204330000000004040433000000400200043d000006670650009c000017b70000813d000000600620003900000000005604350000004005200039000000000045043500000020042000390000000000340435000000000012043500000000000004350000060d0100004100000000030004140000060d0430009c00000000030180190000060d0420009c00000000010240190000004001100210000000c002300210000000000112019f00000668011001c70000000102000039182e181f0000040f000000000301001900000060033002700000060d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000504400272000017750000613d00000000060000190000000507600210000000000871034f000000000808043b00000000008704350000000106600039000000000746004b0000176e0000413d000000000605004b000017830000613d00000003055002100000000504400210000000000604043300000000065601cf000000000656022f000000000741034f000000000707043b0000010005500089000000000757022f00000000055701cf000000000565019f0000000000540435000100000003001f00030000000103550000000102200190000017c80000613d000000000100043300000617011001970000000002000410000000000221004b00000000020000190000000102006039000000000101004b0000000001000019000000010100c039000000000112016f000000010110018f000000000001042d000000400100043d00000044021000390000066603000041000000000032043500000024021000390000001d030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000400100043d00000044021000390000066a030000410000000000320435000000240210003900000016030000390000000000320435000006230200004100000000002104350000000402100039000000200300003900000000003204350000060d020000410000060d0310009c0000000001028019000000400110021000000624011001c70000183000010430000000440120003900000669030000410000000000310435000000240120003900000009030000390000000000310435000006230100004100000000001204350000000401200039000000200300003900000000003104350000060d010000410000060d0320009c0000000001024019000000400110021000000624011001c70000183000010430000000400200043d0000001f0430018f0000000503300272000017d50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000017cd0000413d000000000504004b000017e40000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000060d0100004100000001030000310000060d0430009c00000000030180190000060d0420009c000000000102401900000040011002100000006002300210000000000112019f00001830000104300000000001000411000080010110008c000017f20000613d000000000001042d000006510100004100000000001004350000000101000039000000040010043f00000652010000410000183000010430000000e0031000390000000202000367000000000332034f000000000303043b0000061703300198000018020000613d0000012001100039000000000112034f000000000101043b000018130000013d000000a003100039000000000332034f0000006004100039000000000442034f000000000404043b000000000503043b00000000634500a9000000000605004b0000180e0000613d00000000655300d9000000000445004b000018140000c13d0000012001100039000000000112034f000000000101043b000000000131001a000018140000413d000000000001042d000006510100004100000000001004350000001101000039000000040010043f000006520100004100001830000104300000181d002104210000000102000039000000000001042d0000000002000019000000000001042d00001822002104230000000102000039000000000001042d0000000002000019000000000001042d00001827002104210000000102000039000000000001042d0000000002000019000000000001042d0000182c002104230000000102000039000000000001042d0000000002000019000000000001042d0000182e000004320000182f0001042e000018300001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d3827000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f190100000000000000000000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39202bcce700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000002000000000000000000000000000000000000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f706575650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c0000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffffe05369676e6174757265206c656e67746820697320696e636f72726563740000007fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a10000000000000000000000000000000000000080000000000000000000000000496e76616c69642073000000000000000000000000000000000000000000000076206973206e656974686572203237206e6f72203238000000000000000000000000000000000000000000000000000000000000000000000000000000000000be97d52981e9620417d214917c2494759f680cd074b62767480f0dcc6034231a", + "bytecode": "0x0004000000000002000b00000000000200000000030100190000006003300270000005fe0430019700030000004103550002000000010355000005fe0030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000002000031000000040120008c000000410000413d0000000201000367000000000301043b000000e003300270000006000430009c000000450000a13d000006010430009c000000a90000613d000006020430009c000000ea0000613d000006030330009c000000a60000c13d000000040220008a0000060603000041000000200420008c000000000400001900000000040340190000060605200197000000000605004b000000000300a019000006060550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000006070310009c0000010d0000213d00000000011200490000060602000041000002600310008c000000000300001900000000030240190000060601100197000000000401004b000000000200a019000006060110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d000000200100003900000100001004430000012000000443000005ff01000041000017f50001042e000000000102004b000000a60000c13d0000000001000019000017f50001042e000006040430009c000000eb0000613d000006050330009c000000a60000c13d000000040320008a0000060604000041000000600530008c000000000500001900000000050440190000060603300197000000000603004b000000000400a019000006060330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000006070430009c0000010d0000213d000000040530003900000000045200490000060606000041000002600740008c000000000700001900000000070640190000060604400197000000000804004b000000000600a019000006060440009c00000000040700190000000004066019000000000404004b0000010d0000c13d0000000004000411000080010440008c000000430000c13d000000000400041200000608064001970000000004000410000000000646004b000000430000c13d0000022406300039000000000661034f0000000007320049000000230770008a000000000606043b0000060608000041000000000976004b000000000900001900000000090880190000060607700197000006060a600197000000000b7a004b000000000800801900000000077a013f000006060770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000006070760009c0000010d0000213d000000000762004900000020025000390000060608000041000000000972004b000000000900001900000000090820190000060607700197000006060a200197000000000b7a004b000000000800801900000000077a013f000006060770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000061401000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000062c01000041000000c40010043f0000062d01000041000000e40010043f0000062b01000041000017f60001043017f417cf0000040f0000000001000019000017f50001042e000000040320008a0000060604000041000000600630008c000000000600001900000000060440190000060603300197000000000703004b000000000400a019000006060330009c00000000030600190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000703043b000006070370009c0000010d0000213d000000040670003900000000036200490000060604000041000002600830008c000000000800001900000000080440190000060603300197000000000903004b000000000400a019000006060330009c00000000030800190000000003046019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d000000000300041200000608033001970000000004000410000000000343004b000000430000c13d0000012403700039000000000331034f0000004404700039000000000441034f000000000404043b0000060804400197000000000303043b000006090830009c000001310000413d00000044015000390000061302000041000000000021043500000024015000390000000802000039000000000021043500000614010000410000000000150435000000040150003900000020020000390000000000210435000005fe01000041000005fe0250009c0000000001054019000000400110021000000615011001c7000017f60001043017f417470000040f000000040320008a0000060604000041000000600530008c000000000500001900000000050440190000060603300197000000000603004b000000000400a019000006060330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000b00000003001d000006070330009c0000010d0000213d0000000b030000290000000403300039000a00000003001d00000000023200490000060603000041000002600420008c000000000400001900000000040340190000060602200197000000000502004b000000000300a019000006060220009c00000000020400190000000002036019000000000202004b0000010f0000613d0000000001000019000017f6000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d000000000100041200000608011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d00000020031000390000062e0400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b00000024041000390000000000340435000000240300003900000000003104350000062f0310009c0000015e0000413d000006550100004100000000001004350000004101000039000000040010043f0000065601000041000017f600010430000001c405700039000000000551034f0000000007720049000000230770008a000000000505043b0000060608000041000000000975004b000000000900001900000000090880190000060607700197000006060a500197000000000b7a004b000000000800801900000000077a013f000006060770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005650019000000000151034f000000000601043b000006070160009c0000010d0000213d000000000162004900000020025000390000060605000041000000000712004b0000000007000019000000000705201900000606011001970000060608200197000000000918004b0000000005008019000000000118013f000006060110009c00000000010700190000000001056019000000000101004b0000010d0000c13d00000000010004140000060a0510009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f00000000040104330000060a0540009c000001740000413d00000614020000410000000000230435000000a40210003900000613040000410000000000420435000000840210003900000008040000390000000000420435000000640110003900000020020000390000000000210435000005fe01000041000005fe0230009c0000000001034019000000400110021000000615011001c7000017f600010430000000c0022002100000061002200197000000400110021000000630011000410000063101100197000000000112019f00000060024002100000063202200197000000000121019f00000633011001c70000800302000039000000000300001900000000040000190000000005000019000000000600001917f417e00000040f00030000000103550000006001100270000105fe0010019d000005fe041001970000003f014000390000063405100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000006070630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000102200190000002640000613d0000000901000029000000000101004b000012940000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b000002be0000c13d0000000702000029000000000121034f000000000101043b000000800210008c000003240000413d00000080021002700000063a0310009c000000000201a0190000063a0310009c0000000003000019000000100300203900000008043001bf000006070520009c00000000030420190000004004200270000006070520009c000000000204201900000004043001bf000005fe0520009c00000000030420190000002004200270000005fe0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b0000033b0000613d00000000040304330000063904400197000000f805200210000000000445019f0000063b0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000902000029000000210220003900000000001204350000047b0000013d000000000221034f000000000202043b0000060b02200197000006160720009c0000026e0000c13d000000430260008c000002a00000213d0000061401000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000062901000041000000c40010043f0000062a01000041000000e40010043f0000062b01000041000017f6000104300000000207000367000080060540008c00000000050000190000024b0000c13d000000040560008c00000000050000190000024b0000413d000000000827034f0000000105000039000000000808043b0000060b088001970000060c0980009c0000024a0000613d0000060d0980009c0000024a0000613d0000060e0980009c0000024a0000613d0000060f0580009c00000000050000190000000105006039000000010550018f0000000008260019000005fe02200197000000000227034f000000000703004b0000027a0000c13d000000000368004b000012b00000413d0000000003000031000000000683004b000012b00000413d00000611060000410000061207000041000000000505004b00000000050600190000000005076019000000c0011002100000061001100197000000000115019f0000000003830049000005fe0330019700000000023203df00000000011203af000000000204001917f417ea0000040f000002890000013d0000000001010433000005fe02000041000005fe0410009c0000000001028019000005fe0430009c000000000203401900000040022002100000006001100210000000000121019f000017f600010430000006170120009c000000430000613d0000061401000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000061801000041000000c40010043f0000061901000041000017f600010430000000000668004b000012b00000413d0000000006000031000000000786004b000012b00000413d0000000006860049000005fe0660019700000000026203df000000c001100210000006100110019700000611011001c700000000011203af0000800902000039000000000600001917f417ea0000040f000300000001035500000000030100190000006003300270000105fe0030019d000005fe033001970000000102200190000003090000613d17f417c20000040f0000000002010019000000400100043d000b00000001001d17f417310000040f0000000b040000290000000001410049000005fe02000041000005fe0310009c0000000001028019000005fe0340009c000000000204401900000040022002100000006001100210000000000121019f000017f50001042e0000002402500039000000000221034f000000000202043b000b00000002001d000006080220009c0000010d0000213d000000e402300039000000000221034f0000004403500039000000000131034f000000000101043b000a00000001001d000000000102043b0000061a02000041000000800020043f0000060802400197000800000002001d000000840020043f0000060801100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c0000039d0000c13d0000000103000031000000200130008c00000020040000390000000004034019000003c90000013d000000710320008c000003410000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d00000000044200190000060605000041000000000643004b0000000006000019000000000605801900000606044001970000060607300197000000000847004b0000000005008019000000000447013f000006060440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000003430019000000000131034f000000000101043b000006070410009c0000010d0000213d000000000212004900000020033000390000060604000041000000000523004b0000000005000019000000000504201900000606022001970000060606300197000000000726004b0000000004008019000000000226013f000006060220009c00000000020500190000000002046019000000000202004b0000010d0000c13d0000000002000414000000000131001a000005fe04300197000012b00000413d0000000003000031000000000513004b000012b00000413d00000002044003670000060a0520009c000007d60000413d000000400100043d00000044021000390000061303000041000000000032043500000024021000390000000803000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f6000104300000001f0430018f0000000502300272000003140000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000030d0000413d000000000504004b000003220000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017f600010430000000400200043d000900000002001d000006380220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000003300000413d00000009030000290000000003030433000000000303004b000004720000c13d000006550100004100000000001004350000003201000039000000040010043f0000065601000041000017f600010430000000020120008c000003f00000c13d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005ad0000413d00000080012002700000063a0320009c000000000102a0190000063a0320009c0000000003000019000000100300203900000008043001bf000006070510009c00000000030420190000004004100270000006070510009c000000000104201900000004043001bf000005fe0510009c00000000030420190000002004100270000005fe0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000038a0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003820000413d000000000500004b0000038c0000613d0000000005010433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000005ca0000013d000005fe02000041000005fe0310009c0000000001028019000000c0011002100000061b011001c70000000b0200002917f417e50000040f00000000030100190000006003300270000005fe03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b60000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003ae0000413d000000000705004b000003c50000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000044c0000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000061c030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000061d05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c0000054c0000c13d000000010200003900000001010000310000055d0000013d000000010120008c000004cc0000c13d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d000000000201043b000000800120008c0000063f0000413d00000080012002700000063a0320009c000000000102a0190000063a0320009c0000000003000019000000100300203900000008043001bf000006070510009c00000000030420190000004004100270000006070510009c000000000104201900000004043001bf000005fe0510009c00000000030420190000002004100270000005fe0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004390000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004310000413d000000000500004b0000043b0000613d0000000005010433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000065c0000013d000000400200043d0000001f0430018f0000000503300272000004590000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004510000413d000000000504004b000004680000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005fe010000410000000103000031000005fe0430009c0000000003018019000005fe0420009c000000000102401900000040011002100000006002300210000000000112019f000017f600010430000000f8031002100000060604000041000000000101004b0000000001030019000000000104601900000000030204330000063903300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c000004de0000413d00000080012002700000063a0320009c000000000102a0190000063a0320009c0000000003000019000000100300203900000008043001bf000006070510009c00000000030420190000004004100270000006070510009c000000000104201900000004043001bf000005fe0510009c00000000030420190000002004100270000005fe0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004b90000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004b10000413d000000000500004b000004bb0000613d0000000005010433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000004fb0000013d000000400100043d00000044021000390000063503000041000000000032043500000024021000390000001703000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400100043d000006380310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004e80000413d0000000004010433000000000404004b0000033b0000613d000000f8042002100000060605000041000000000202004b0000000002040019000000000205601900000000040304330000063904400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c000006ac0000413d00000080023002700000063a0430009c000000000203a0190000063a0430009c0000000004000019000000100400203900000008054001bf000006070620009c00000000040520190000004005200270000006070620009c000000000205201900000004054001bf000005fe0620009c00000000040520190000002005200270000005fe0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006070750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005390000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005310000413d000000000600004b0000053b0000613d0000000006020433000000000606004b0000033b0000613d00000000060504330000063906600197000000f807400210000000000667019f0000063b0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006c90000013d000005fe04000041000005fe0530009c000000000304801900000060033002100000004002200210000000000223019f000005fe0310009c0000000001048019000000c001100210000000000112019f0000000b0200002917f417e00000040f000000010220018f00030000000103550000006001100270000105fe0010019d000005fe011001970000006003000039000700000003001d000000000301004b0000057d0000c13d00000007010000290000000031010434000300000003001d000000000202004b0000061a0000c13d000000000201004b0000075d0000c13d000000400300043d000b00000003001d000006140100004100000000001304350000000401300039000000060200002900000000002104350000002402300039000000050100002917f4171e0000040f0000000b040000290000000001410049000005fe02000041000005fe0310009c0000000001028019000005fe0340009c000000000204401900000040022002100000006001100210000000000121019f000017f600010430000006070310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f00000005055002720000059d0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005950000413d000000000604004b000005610000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000005610000013d000000400100043d000006380310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005b70000413d0000000004010433000000000404004b0000033b0000613d000000f8042002100000060605000041000000000202004b0000000002040019000000000205601900000000040304330000063904400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000007680000413d00000080023002700000063a0430009c000000000203a0190000063a0430009c0000000004000019000000100400203900000008054001bf000006070620009c00000000040520190000004005200270000006070620009c000000000205201900000004054001bf000005fe0620009c00000000040520190000002005200270000005fe0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006070750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000006070000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005ff0000413d000000000600004b000006090000613d0000000006020433000000000606004b0000033b0000613d00000000060504330000063906600197000000f807400210000000000667019f0000063b0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000007850000013d000000000201004b00000a320000c13d0000061e0100004100000000001004390000000b010000290000000400100443000005fe010000410000000002000414000005fe0320009c0000000001024019000000c0011002100000061f011001c7000080020200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000000000101004b00000a2e0000c13d000000400100043d00000044021000390000062803000041000000000032043500000024021000390000001d03000039000000000032043500000614020000410000000000210435000000040210003900000006030000290000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400100043d000006380310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000006490000413d0000000004010433000000000404004b0000033b0000613d000000f8042002100000060605000041000000000202004b0000000002040019000000000205601900000000040304330000063904400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c000009c00000413d00000080032002700000063a0420009c000000000302a0190000063a0420009c0000000004000019000000100400203900000008054001bf000006070630009c00000000040520190000004005300270000006070630009c000000000305201900000004054001bf000005fe0630009c00000000040520190000002005300270000005fe0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000006070750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006990000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000006910000413d000000000600004b0000069b0000613d0000000006030433000000000606004b0000033b0000613d00000000060504330000063906600197000000f807400210000000000667019f0000063b0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000009dd0000013d000000400200043d000006380420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006b60000413d0000000005020433000000000505004b0000033b0000613d000000f8053002100000060606000041000000000303004b0000000003050019000000000306601900000000050404330000063905500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006d70000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b000006d00000413d000000000143001900000000000104350000000004020433000000000504004b000006e40000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b000006dd0000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000006070220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f000006380110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000063c0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000bcd0000413d00000080021002700000063a0310009c000000000201a0190000063a0310009c0000000003000019000000100300203900000008043001bf000006070520009c00000000030420190000004004200270000006070520009c000000000204201900000004043001bf000005fe0520009c00000000030420190000002004200270000005fe0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000007480000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007400000413d000000000400004b0000074a0000613d00000005040000290000000004040433000000000404004b0000033b0000613d00000000040304330000063904400197000000f805200210000000000445019f0000063b0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000bed0000013d000005fe020000410000000304000029000005fe0340009c00000000030200190000000003044019000005fe0410009c000000000102801900000060011002100000004002300210000000000121019f000017f600010430000000400200043d000006380420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007720000413d0000000005020433000000000505004b0000033b0000613d000000f8053002100000060606000041000000000303004b0000000003050019000000000306601900000000050404330000063905500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a6f0000413d00000080043002700000063a0530009c000000000403a0190000063a0530009c0000000005000019000000100500203900000008065001bf000006070740009c00000000050620190000004006400270000006070740009c000000000406201900000004065001bf000005fe0740009c00000000050620190000002006400270000005fe0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006070860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007c30000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000007bb0000413d000000000700004b000007c50000613d0000000007040433000000000707004b0000033b0000613d00000000070604330000063907700197000000f808500210000000000778019f0000063b0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000a8c0000013d0000000001130049000005fe0110019700000000011403df000000c002200210000006100220019700000612022001c700000000012103af000080100200003917f417ef0000040f00000000030100190000006003300270000105fe0030019d000005fe033001970003000000010355000000010220019000000add0000613d0000003f013000390000063401100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006070510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000008010000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007f90000413d000000000400004b000008030000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008130000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b0000080b0000413d000000000604004b000008220000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ce40000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b0000060606000041000000000753004b0000000007000019000000000706801900000606055001970000060608300197000000000958004b0000000006008019000000000558013f000006060550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000006070350009c0000010d0000213d0000000503500210000000000434004900000020061000390000060601000041000000000746004b0000000007000019000000000701201900000606044001970000060608600197000000000948004b0000000001008019000000000448013f000006060440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d00000020041000390000064105500198000008610000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000008590000413d000000000200004b000008630000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000006070520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f000005fe02000041000005fe0340009c0000000003020019000000000304401900000040033002100000000001010433000005fe0410009c00000000010280190000006001100210000000000131019f0000000003000414000005fe0430009c0000000002034019000000c002200210000000000112019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b0000060606000041000000000754004b0000000007000019000000000706801900000606055001970000060608400197000000000958004b0000000006008019000000000558013f000006060550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000004140019000000000143034f000000000101043b000006070310009c0000010d0000213d000000000212004900000020034000390000060604000041000000000523004b0000000005000019000000000504201900000606022001970000060606300197000000000726004b0000000004008019000000000226013f000006060220009c00000000020500190000000002046019000000000202004b0000010d0000c13d0000000002000414000000000131001a000005fe04300197000012b00000413d0000000003000031000000000513004b000012b00000413d0000000204400367000005fe0520009c000002f70000213d0000000001130049000005fe0110019700000000011403df000000c002200210000006100220019700000612022001c700000000012103af000080100200003917f417ef0000040f00000000030100190000006003300270000105fe0030019d000005fe03300197000300000001035500000001022001900000157d0000613d0000003f013000390000063401100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006070510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000008e70000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000008df0000413d000000000400004b000008e90000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008f90000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008f10000413d000000000604004b000009080000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ce40000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000643030000410000000000320435000001c0030000390000000000310435000006440310009c0000012b0000213d000001e003100039000000400030043f000005fe03000041000005fe0420009c000000000203801900000040022002100000000001010433000005fe0410009c00000000010380190000006001100210000000000121019f0000000002000414000005fe0420009c0000000002038019000000c002200210000000000112019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b000006450300004100000000003204350000008003400039000000000013043500000060014000390000064603000041000000000031043500000040014000390000064703000041000000000031043500000080010000390000000000140435000006480140009c0000012b0000213d0000000904000029000000a001400039000000400010043f000005fe01000041000005fe0320009c000000000201801900000040022002100000000003040433000005fe0430009c00000000030180190000006003300210000000000223019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d000000000301043b000000400100043d0000004202100039000000070400002900000000004204350000002002100039000006490400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006240310009c0000012b0000213d0000008003100039000000400030043f000005fe03000041000005fe0420009c000000000203801900000040022002100000000001010433000005fe0410009c00000000010380190000006001100210000000000121019f0000000002000414000005fe0420009c0000000002038019000000c002200210000000000112019f00000640011001c7000080100200003917f417e50000040f0000000102200190000012920000c13d0000010d0000013d000000400300043d000006380430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000009ca0000413d0000000005030433000000000505004b0000033b0000613d000000f8052002100000060606000041000000000202004b0000000002050019000000000206601900000000050404330000063905500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b5f0000413d00000080042002700000063a0520009c000000000402a0190000063a0520009c0000000005000019000000100500203900000008065001bf000006070740009c00000000050620190000004006400270000006070740009c000000000406201900000004065001bf000005fe0740009c00000000050620190000002006400270000005fe0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006070860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200000a1b0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00000a130000413d000000000700004b00000a1d0000613d0000000007040433000000000707004b0000033b0000613d00000000070604330000063907700197000000f808500210000000000778019f0000063b0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b7c0000013d00000007010000290000000001010433000000000201004b00000a5c0000613d0000060602000041000000200310008c000000000300001900000000030240190000060601100197000000000401004b000000000200a019000006060110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a5c0000c13d000000400100043d00000064021000390000062603000041000000000032043500000044021000390000062703000041000000000032043500000024021000390000002a03000039000000000032043500000614020000410000000000210435000000040210003900000006030000290000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f600010430000000400300043d0000002401300039000000090200002900000000002104350000061a010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000af80000c13d0000000103000031000000200130008c0000002004000039000000000403401900000b2b0000013d000000400400043d000006380540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000a790000413d0000000006040433000000000606004b0000033b0000613d000000f8063002100000060607000041000000000303004b0000000003060019000000000307601900000000060504330000063906600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c620000413d00000080053002700000063a0630009c000000000503a0190000063a0630009c0000000006000019000000100600203900000008076001bf000006070850009c00000000060720190000004007500270000006070850009c000000000507201900000004076001bf000005fe0850009c00000000060720190000002007500270000005fe0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006070970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000aca0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000ac20000413d000000000800004b00000acc0000613d0000000008050433000000000808004b0000033b0000613d00000000080704330000063908800197000000f809600210000000000889019f0000063b0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000c7f0000013d0000001f0430018f000000050230027200000ae80000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000ae10000413d000000000504004b00000af60000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017f600010430000005fe02000041000005fe0310009c00000000010280190000000704000029000005fe0340009c00000000020440190000004002200210000000c001100210000000000121019f00000620011001c70000000b0200002917f417e50000040f000000070a00002900000000030100190000006003300270000005fe03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000b170000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000b0f0000413d000000000705004b00000b270000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000c3c0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000006070410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000cd00000c13d00000044021000390000000a03000029000000000032043500000020021000390000061c03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006240310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006250310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000061d040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000df20000c13d0000000102000039000000010100003100000e050000013d000000400400043d000006380540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b690000413d0000000006040433000000000606004b0000033b0000613d000000f8062002100000060607000041000000000202004b0000000002060019000000000207601900000000060504330000063906600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000cf60000413d00000080052002700000063a0620009c000000000502a0190000063a0620009c0000000006000019000000100600203900000008076001bf000006070850009c00000000060720190000004007500270000006070850009c000000000507201900000004076001bf000005fe0850009c00000000060720190000002007500270000005fe0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006070970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000bba0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000bb20000413d000000000800004b00000bbc0000613d0000000008050433000000000808004b0000033b0000613d00000000080704330000063908800197000000f809600210000000000889019f0000063b0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000d130000013d000000400200043d000500000002001d000006380220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000bd90000413d00000005030000290000000003030433000000000303004b0000033b0000613d000000f8031002100000060604000041000000000101004b0000000001030019000000000104601900000000030204330000063903300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d00000000044300190000060605000041000000000641004b0000000006000019000000000605801900000606044001970000060607100197000000000847004b0000000005008019000000000447013f000006060440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000006070510009c0000010d0000213d000000000513004900000020034000390000060604000041000000000653004b0000000006000019000000000604201900000606055001970000060607300197000000000857004b0000000004008019000000000557013f000006060550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000f240000c13d000000000132034f000000000101043b000000010200008a0000060603000041000000000221004b000000000200001900000000020320190000060601100197000006060410009c00000000030080190000060601100167000006060110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010820000c13d000000400100043d000400000001001d000006380110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000063b02000041000000000021043500000001010000390000000000130435000010820000013d000000400200043d0000001f0430018f000000050330027200000c490000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c410000413d000000000504004b00000c580000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005fe010000410000000103000031000005fe0430009c0000000003018019000005fe0420009c000000000102401900000040011002100000006002300210000000000112019f000017f600010430000000400500043d000006380650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c6c0000413d0000000007050433000000000707004b0000033b0000613d000000f8073002100000060608000041000000000303004b0000000003070019000000000308601900000000070604330000063907700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d740000413d00000080063002700000063a0730009c000000000603a0190000063a0730009c0000000007000019000000100700203900000008087001bf000006070960009c00000000070820190000004008600270000006070960009c000000000608201900000004087001bf000005fe0960009c00000000070820190000002008600270000005fe0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000006070a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000cbd0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000cb50000413d000000000900004b00000cbf0000613d0000000009060433000000000909004b0000033b0000613d00000000090804330000063909900197000000f80a70021000000000099a019f0000063b0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000d910000013d00000064021000390000062103000041000000000032043500000044021000390000062203000041000000000032043500000024021000390000003603000039000000000032043500000614020000410000000000210435000000040210003900000006030000290000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f600010430000000400100043d00000044021000390000064203000041000000000032043500000024021000390000001f03000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400500043d000006380650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000d000000413d0000000007050433000000000707004b0000033b0000613d000000f8072002100000060608000041000000000202004b0000000002070019000000000208601900000000070604330000063907700197000000000227019f0000000000260435000000400600043d000006380260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000063c0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e550000413d00000080072002700000063a0820009c000000000702a0190000063a0820009c0000000008000019000000100800203900000008098001bf000006070a70009c00000000080920190000004009700270000006070a70009c000000000709201900000004098001bf000005fe0a70009c00000000080920190000002009700270000005fe0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000006070b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d610000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d590000413d000000000a00004b00000d630000613d000000000a070433000000000a0a004b0000033b0000613d000000000a090433000006390aa00197000000f80b800210000000000aab019f0000063b0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e720000013d000000400600043d000006380760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d7e0000413d0000000008060433000000000808004b0000033b0000613d000000f8083002100000060609000041000000000303004b0000000003080019000000000309601900000000080704330000063908800197000000000338019f0000000000370435000000400700043d000006380370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000063c090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f870000413d00000080083002700000063a0930009c000000000803a0190000063a0930009c00000000090000190000001009002039000000080a9001bf000006070b80009c00000000090a2019000000400a800270000006070b80009c00000000080a2019000000040a9001bf000005fe0b80009c00000000090a2019000000200a800270000005fe0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000006070ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000ddf0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000dd70000413d000000000b00004b00000de10000613d000000000b080433000000000b0b004b0000033b0000613d000000000b0a0433000006390bb00197000000f80c900210000000000bbc019f0000063b0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000fa40000013d000005fe04000041000005fe0520009c00000000020480190000004002200210000005fe0530009c00000000030480190000006003300210000000000223019f000005fe0310009c0000000001048019000000c001100210000000000112019f0000000b0200002917f417e00000040f000000010220018f00030000000103550000006001100270000105fe0010019d000005fe011001970000006003000039000900000003001d000000000301004b00000e250000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f5a0000c13d000000000201004b000011510000c13d000000400300043d000b00000003001d0000061401000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a0100002917f4171e0000040f0000000b040000290000000001410049000005fe02000041000005fe0310009c0000000001028019000005fe0340009c000000000204401900000040022002100000006001100210000000000121019f000017f600010430000006070310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e450000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000e3d0000413d000000000604004b00000e090000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000e090000013d000000400700043d000006380870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e5f0000413d0000000009070433000000000909004b0000033b0000613d000000f809200210000006060a000041000000000202004b000000000209001900000000020a601900000000090804330000063909900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e7f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e780000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000e8e0000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e870000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000e9d0000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000e960000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000eac0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000ea50000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000ebb0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000eb40000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000eca0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000ec30000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000006070450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000006060a000041000000000b96004b000000000b000019000000000b0a80190000060609900197000006060c600197000000000d9c004b000000000a00801900000000099c013f000006060990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006070a60009c0000010d0000213d000000000a68004900000020089000390000060609000041000000000ba8004b000000000b000019000000000b092019000006060aa00197000006060c800197000000000dac004b0000000009008019000000000aac013f000006060aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000013f30000c13d000000000687034f000000000606043b000000010700008a0000060608000041000000000776004b000000000700001900000000070820190000060606600197000006060960009c00000000080080190000060606600167000006060660009c00000000070860190000006006000039000000000707004b000014710000c13d000006380650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000063b070000410000000000760435000000010600003900000000006504350000000006050019000014710000013d000000380210008c000010650000413d0000002002100270000005fe0310009c00000000030100190000000003022019000005fe0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000006380440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f420000413d00000004040000290000000004040433000000000404004b0000033b0000613d00000000040304330000063904400197000000f805200210000000000445019f0000063d044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010820000013d000000000201004b00000f710000c13d0000061e0100004100000000001004390000000b010000290000000400100443000005fe010000410000000002000414000005fe0320009c0000000001024019000000c0011002100000061f011001c7000080020200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000000000101004b0000062d0000613d00000009010000290000000001010433000000000201004b000000430000613d0000060602000041000000200310008c000000000300001900000000030240190000060601100197000000000401004b000000000200a019000006060110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a470000613d000000430000013d000000400800043d000006380980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000f910000413d000000000a080433000000000a0a004b0000033b0000613d000000f80a300210000006060b000041000000000303004b00000000030a001900000000030b6019000000000a090433000006390aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000fb10000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000faa0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000fc00000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000fb90000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000fcf0000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000fc80000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000fde0000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000fd70000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b00000fed0000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000fe60000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b00000ffc0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b00000ff50000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b0000100b0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b000010040000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000006070450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000006060a000041000000000b96004b000000000b000019000000000b0a80190000060609900197000006060c600197000000000d9c004b000000000a00801900000000099c013f000006060990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006070a60009c0000010d0000213d000000000a68004900000020089000390000060609000041000000000ba8004b000000000b000019000000000b092019000006060aa00197000006060c800197000000000dac004b0000000009008019000000000aac013f000006060aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000014250000c13d000000000687034f000000000606043b000000010700008a0000060608000041000000000776004b000000000700001900000000070820190000060606600197000006060960009c00000000080080190000060606600167000006060660009c00000000070860190000006006000039000000000707004b000015040000c13d000006380650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000063b070000410000000000760435000000010600003900000000006504350000000006050019000015040000013d000000400200043d000400000002001d000006380220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010710000413d00000004030000290000000003030433000000000303004b0000033b0000613d000000f80110021000000000030204330000063903300197000000000113019f0000060601100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b000010f70000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b0000060604000041000000000659004b0000000006000019000000000604801900000606055001970000060607900197000000000857004b0000000004008019000000000557013f000006060550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000006070a20009c0000010d0000213d00000000032300490000002009900039000006060a000041000000000b39004b000000000b000019000000000b0a201900000606033001970000060609900197000000000c39004b000000000a008019000000000339013f000006060330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000060702200197000000380320008c000011990000413d0000002003200270000005fe0420009c00000000040200190000000004032019000005fe0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d000006380560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010e10000413d0000000005060433000000000505004b0000033b0000613d00000000050404330000063905500197000000f807300210000000000557019f0000063f055001c700000000005404350000000303300210000000f80330008900000000023201cf00000021036000390000000000230435000011b30000013d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000115c0000413d00000080021002700000063a0310009c000000000201a0190000063a0310009c0000000003000019000000100300203900000008043001bf000006070520009c00000000030420190000004004200270000006070520009c000000000204201900000004043001bf000005fe0520009c00000000030420190000002004200270000005fe0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f00000002043000390000000004420436000000210530003900000005055002720000113e0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000011360000413d000000000500004b000011400000613d0000000005020433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c000000000100201900000021032000390000000000130435000011790000013d000005fe020000410000000804000029000005fe0340009c00000000030200190000000003044019000005fe0410009c000000000102801900000060011002100000004002300210000000000121019f000017f600010430000000400200043d000006380320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011660000413d0000000004020433000000000404004b0000033b0000613d000000f8041002100000060605000041000000000101004b0000000001040019000000000105601900000000040304330000063904400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011860000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b0000117f0000413d00000000024300190000064a0400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000006070420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000108a0000013d000000400600043d000006380360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a000011a30000413d0000000004060433000000000404004b0000033b0000613d000000f80220021000000000040304330000063904400197000000000242019f0000063e02200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b0000060607000041000000000854004b0000000008000019000000000807801900000606055001970000060609400197000000000a59004b0000000007008019000000000559013f000006060550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000006070340009c0000010d0000213d000000000242004900000020055000390000060603000041000000000725004b0000000007000019000000000703201900000606022001970000060608500197000000000928004b0000000003008019000000000228013f000006060220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000011eb0000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000011e40000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000011fc0000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011f40000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b0000120d0000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012050000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b0000121e0000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012160000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b0000122f0000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012270000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b000012400000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012380000413d0000000008870019000000000008043500000000066700190000001f0740018f000000200860003900000002055003670000000509400272000012510000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012490000413d000000000a07004b000012600000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b0000126e0000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012670000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000006070510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f000005fe01000041000005fe0430009c000000000301801900000040033002100000000002020433000005fe0420009c00000000020180190000006002200210000000000232019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000900000001001d0000000b01000029000000e4021000390000000201000367000000000221034f000000000202043b0000060802200198000012b60000c13d0000000b03000029000000a402300039000000000221034f0000006403300039000000000331034f000000000303043b000000000402043b00000000523400a9000000000504004b000012a80000613d00000000544200d9000000000334004b000012b00000c13d0000000b030000290000012403300039000000000131034f000000000101043b000000000121001a000700000001001d000012b00000413d000012bb0000013d000006550100004100000000001004350000001101000039000000040010043f0000065601000041000017f6000104300000000b020000290000012402200039000000000121034f000000000101043b000700000001001d0000064b01000041000000000010043900000008010000290000000400100443000005fe010000410000000002000414000005fe0320009c0000000001024019000000c0011002100000061f011001c70000800a0200003917f417e50000040f00000001022001900000010d0000613d000000000101043b0000000702000029000000000112004b000012e20000a13d000000400100043d00000064021000390000065303000041000000000032043500000044021000390000065403000041000000000032043500000024021000390000002203000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f60001043000000000030000310000000b020000290000000001230049000000230410008a000001e4022000390000000201000367000000000221034f000000000202043b0000060605000041000000000642004b0000000006000019000000000605801900000606044001970000060607200197000000000847004b0000000005008019000000000447013f000006060440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000002420019000000000121034f000000000101043b000006070410009c0000010d0000213d000000000413004900000020052000390000060602000041000000000645004b0000000006000019000000000602201900000606044001970000060607500197000000000847004b0000000002008019000000000447013f000006060440009c000000000206c019000000000202004b0000010d0000c13d0000003f02100039000000200400008a000000000442016f000000400200043d0000000004420019000000000624004b00000000060000190000000106004039000006070740009c0000012b0000213d00000001066001900000012b0000c13d000000400040043f00000000041204360000000006510019000000000336004b0000010d0000213d0000001f0310018f000000020550036700000005061002720000132b0000613d000000000700001900000005087002100000000009840019000000000885034f000000000808043b00000000008904350000000107700039000000000867004b000013230000413d000000000703004b0000133a0000613d0000000506600210000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f0000000000360435000000000114001900000000000104350000000001020433000000410110008c000013580000c13d00000041012000390000000001010433000000ff0310018f0000001d0130008a000000030500008a000000000151004b0000136a0000213d000000400100043d00000044021000390000065203000041000000000032043500000024021000390000001603000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400100043d00000044021000390000064c03000041000000000032043500000024021000390000001d03000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000000404043300000040012000390000000002010433000000400100043d0000064d0520009c000013810000413d00000044021000390000065103000041000000000032043500000024021000390000000903000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000600510003900000000002504350000004002100039000000000042043500000020021000390000000000320435000000090200002900000000002104350000000000000435000005fe020000410000000003000414000005fe0430009c0000000003028019000005fe0410009c00000000010280190000004001100210000000c002300210000000000112019f0000064e011001c7000000010200003917f417e50000040f00000000030100190000006003300270000005fe03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000504400272000013a70000613d00000000060000190000000507600210000000000871034f000000000808043b00000000008704350000000106600039000000000746004b000013a00000413d000000000605004b000013b50000613d00000003055002100000000504400210000000000604043300000000065601cf000000000656022f000000000741034f000000000707043b0000010005500089000000000757022f00000000055701cf000000000565019f0000000000540435000100000003001f00030000000103550000000102200190000013cd0000613d000000000100043300000608011001970000000802000029000000000221004b0000000002000019000000010200c039000000000101004b0000000001000019000000010100603900000000011201a00000064f01000041000000000100c019000000400200043d0000000000120435000005fe01000041000005fe0320009c0000000001024019000000400110021000000650011001c7000017f50001042e000000400200043d0000001f0430018f0000000503300272000013da0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000013d20000413d000000000504004b000013e90000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005fe010000410000000103000031000005fe0430009c0000000003018019000005fe0420009c000000000102401900000040011002100000006002300210000000000112019f000017f600010430000000380760008c000014570000413d0000002007600270000005fe0860009c00000000080600190000000008072019000005fe0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006380950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000140e0000413d0000000009050433000000000909004b0000033b0000613d00000000090804330000063909900197000000f80a70021000000000099a019f0000063d099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000014710000013d000000380760008c000014ea0000413d0000002007600270000005fe0860009c00000000080600190000000008072019000005fe0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006380950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000014400000413d0000000009050433000000000909004b0000033b0000613d00000000090804330000063909900197000000f80a70021000000000099a019f0000063d099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000015040000013d000006380750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000014600000413d0000000008050433000000000808004b0000033b0000613d000000f80660021000000000080704330000063908800197000000000668019f000006060660016700000000006704350000000006050019000000400500043d000006380750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000147b0000413d0000000009050433000000000909004b0000033b0000613d000000000907043300000639099001970000063e099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000006060a000041000000000d9c004b000000000d000019000000000d0a80190000060609900197000006060ec00197000000000f9e004b000000000a00801900000000099e013f000006060990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006070db0009c0000010d0000213d0000000007b70049000000200cc00039000006060d000041000000000e7c004b000000000e000019000000000e0d20190000060607700197000006060cc00197000000000f7c004b000000000d00801900000000077c013f000006060770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000060709700197000000380790008c000015980000413d0000002007900270000005fe0890009c000000000709a019000005fe0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006380b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000014d40000413d000000000b070433000000000b0b004b0000033b0000613d000000000b0a0433000006390bb00197000000f80c800210000000000bbc019f0000063f0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000015b10000013d000006380750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000014f30000413d0000000008050433000000000808004b0000033b0000613d000000f80660021000000000080704330000063908800197000000000668019f000006060660016700000000006704350000000006050019000000400500043d000006380750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000150e0000413d0000000009050433000000000909004b0000033b0000613d000000000907043300000639099001970000063e099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000006060a000041000000000d9c004b000000000d000019000000000d0a80190000060609900197000006060ec00197000000000f9e004b000000000a00801900000000099e013f000006060990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006070db0009c0000010d0000213d0000000007b70049000000200cc00039000006060d000041000000000e7c004b000000000e000019000000000e0d20190000060607700197000006060cc00197000000000f7c004b000000000d00801900000000077c013f000006060770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000060709700197000000380790008c0000165b0000413d0000002007900270000005fe0890009c000000000709a019000005fe0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006380b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000015670000413d000000000b070433000000000b0b004b0000033b0000613d000000000b0a0433000006390bb00197000000f80c800210000000000bbc019f0000063f0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000016740000013d0000001f0430018f0000000502300272000015880000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000015810000413d000000000504004b000015960000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017f600010430000000400700043d000006380a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000015a10000413d000000000a070433000000000a0a004b0000033b0000613d000000f809900210000000000a080433000006390aa001970000000009a9019f0000063e099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000006060a000041000000000b83004b000000000b000019000000000b0a80190000060608800197000006060c300197000000000d8c004b000000000a00801900000000088c013f000006060880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000006070480009c0000010d0000213d000000000489004900000020093000390000060603000041000000000a49004b000000000a000019000000000a0320190000060604400197000006060b900197000000000c4b004b000000000300801900000000044b013f000006060440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006330a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b000015e90000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000015e20000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b000015f80000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b000015f10000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b000016070000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000016000000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a800272000016180000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000016100000413d000000000b06004b000016270000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000016350000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b0000162e0000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000006070510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000005fe01000041000005fe0240009c0000000002010019000000000204401900000040022002100000000003030433000005fe0430009c00000000030180190000006003300210000000000223019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f0000000102200190000012920000c13d0000010d0000013d000000400700043d000006380a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000016640000413d000000000a070433000000000a0a004b0000033b0000613d000000f809900210000000000a080433000006390aa001970000000009a9019f0000063e099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000006060a000041000000000b82004b000000000b000019000000000b0a80190000060608800197000006060c200197000000000d8c004b000000000a00801900000000088c013f000006060880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000006070480009c0000010d0000213d000000000489004900000020092000390000060602000041000000000a49004b000000000a000019000000000a0220190000060604400197000006060b900197000000000c4b004b000000000200801900000000044b013f000006060440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d0000002004200039000006400a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b000016ac0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000016a50000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b000016bb0000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b000016b40000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000016ca0000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000016c30000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000016db0000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000016d30000413d000000000b06004b000016ea0000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b000016f80000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000016f10000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000006070510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f000005fe01000041000005fe0340009c0000000003010019000000000304401900000040033002100000000002020433000005fe0420009c00000000020180190000006002200210000000000232019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f0000000102200190000012920000c13d0000010d0000013d00000000030104330000000002320436000000000403004b0000172a0000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000017230000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000017400000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000017390000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a000000000310003100000606010000410000005f0230008c000000000200001900000000020120190000060604300197000000000504004b0000000001008019000006060440009c000000000102c019000000000101004b0000178d0000613d00000002010003670000004402100370000000000202043b000006070420009c0000178d0000213d00000000032300490000060604000041000002600530008c000000000500001900000000050440190000060603300197000000000603004b000000000400a019000006060330009c00000000030500190000000003046019000000000303004b0000178d0000c13d0000000003000411000080010330008c0000178b0000c13d000000000300041200000608033001970000000004000410000000000343004b0000178b0000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b0000178f0000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d000005fe02000041000005fe0310009c0000000001028019000000c001100210000080010200003917f417e00000040f000000010300002900030000000103550000006001100270000105fe0010019d000000200130011a00000001012001950000000101200190000017a70000613d0000000001000019000017f50001042e0000000001000019000017f60001043000000000431200a900000000422300d9000000000112004b000017bc0000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b0000177c0000613d000005fe02000041000005fe0410009c0000000001028019000000c00110021000000640011001c700008009020000390000800104000039000000000500001917f417e00000040f0000000003000415000000020330008a00000020033000c9000017840000013d000000400100043d00000064021000390000065703000041000000000032043500000044021000390000065803000041000000000032043500000024021000390000002503000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f600010430000006550100004100000000001004350000001101000039000000040010043f0000065601000041000017f600010430000000400100043d000006590210009c000017c90000813d0000002002100039000000400020043f0000000000010435000000000001042d000006550100004100000000001004350000004101000039000000040010043f0000065601000041000017f600010430000000000100041200000608011001970000000002000410000000000121004b000017d80000c13d0000000001000411000080010110008c000017da0000613d000000000001042d0000000001000019000017f50001042e000006550100004100000000001004350000000101000039000000040010043f0000065601000041000017f600010430000017e3002104210000000102000039000000000001042d0000000002000019000000000001042d000017e8002104230000000102000039000000000001042d0000000002000019000000000001042d000017ed002104210000000102000039000000000001042d0000000002000019000000000001042d000017f2002104230000000102000039000000000001042d0000000002000019000000000001042d000017f400000432000017f50001042e000017f600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d3827000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f190100000000000000000000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f395369676e6174757265206c656e67746820697320696e636f72726563740000007fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a10000000000000000000000000000000000000080000000000000000000000000202bcce7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000496e76616c69642073000000000000000000000000000000000000000000000076206973206e656974686572203237206e6f722032380000000000000000000075650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f7065000000000000000000000000000000000000000000000000ffffffffffffffe0f02ad7a6c9bd15b4a609dc9f1d09d0fe7738d949cfb17d2adf03465aa5b8d4d8", + "deployedBytecode": "0x0004000000000002000b00000000000200000000030100190000006003300270000005fe0430019700030000004103550002000000010355000005fe0030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000002000031000000040120008c000000410000413d0000000201000367000000000301043b000000e003300270000006000430009c000000450000a13d000006010430009c000000a90000613d000006020430009c000000ea0000613d000006030330009c000000a60000c13d000000040220008a0000060603000041000000200420008c000000000400001900000000040340190000060605200197000000000605004b000000000300a019000006060550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000006070310009c0000010d0000213d00000000011200490000060602000041000002600310008c000000000300001900000000030240190000060601100197000000000401004b000000000200a019000006060110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d000000200100003900000100001004430000012000000443000005ff01000041000017f50001042e000000000102004b000000a60000c13d0000000001000019000017f50001042e000006040430009c000000eb0000613d000006050330009c000000a60000c13d000000040320008a0000060604000041000000600530008c000000000500001900000000050440190000060603300197000000000603004b000000000400a019000006060330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000006070430009c0000010d0000213d000000040530003900000000045200490000060606000041000002600740008c000000000700001900000000070640190000060604400197000000000804004b000000000600a019000006060440009c00000000040700190000000004066019000000000404004b0000010d0000c13d0000000004000411000080010440008c000000430000c13d000000000400041200000608064001970000000004000410000000000646004b000000430000c13d0000022406300039000000000661034f0000000007320049000000230770008a000000000606043b0000060608000041000000000976004b000000000900001900000000090880190000060607700197000006060a600197000000000b7a004b000000000800801900000000077a013f000006060770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000006070760009c0000010d0000213d000000000762004900000020025000390000060608000041000000000972004b000000000900001900000000090820190000060607700197000006060a200197000000000b7a004b000000000800801900000000077a013f000006060770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000061401000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000062c01000041000000c40010043f0000062d01000041000000e40010043f0000062b01000041000017f60001043017f417cf0000040f0000000001000019000017f50001042e000000040320008a0000060604000041000000600630008c000000000600001900000000060440190000060603300197000000000703004b000000000400a019000006060330009c00000000030600190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000703043b000006070370009c0000010d0000213d000000040670003900000000036200490000060604000041000002600830008c000000000800001900000000080440190000060603300197000000000903004b000000000400a019000006060330009c00000000030800190000000003046019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d000000000300041200000608033001970000000004000410000000000343004b000000430000c13d0000012403700039000000000331034f0000004404700039000000000441034f000000000404043b0000060804400197000000000303043b000006090830009c000001310000413d00000044015000390000061302000041000000000021043500000024015000390000000802000039000000000021043500000614010000410000000000150435000000040150003900000020020000390000000000210435000005fe01000041000005fe0250009c0000000001054019000000400110021000000615011001c7000017f60001043017f417470000040f000000040320008a0000060604000041000000600530008c000000000500001900000000050440190000060603300197000000000603004b000000000400a019000006060330009c00000000030500190000000003046019000000000303004b0000010d0000c13d0000004403100370000000000303043b000b00000003001d000006070330009c0000010d0000213d0000000b030000290000000403300039000a00000003001d00000000023200490000060603000041000002600420008c000000000400001900000000040340190000060602200197000000000502004b000000000300a019000006060220009c00000000020400190000000002036019000000000202004b0000010f0000613d0000000001000019000017f6000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d000000000100041200000608011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d00000020031000390000062e0400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b00000024041000390000000000340435000000240300003900000000003104350000062f0310009c0000015e0000413d000006550100004100000000001004350000004101000039000000040010043f0000065601000041000017f600010430000001c405700039000000000551034f0000000007720049000000230770008a000000000505043b0000060608000041000000000975004b000000000900001900000000090880190000060607700197000006060a500197000000000b7a004b000000000800801900000000077a013f000006060770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005650019000000000151034f000000000601043b000006070160009c0000010d0000213d000000000162004900000020025000390000060605000041000000000712004b0000000007000019000000000705201900000606011001970000060608200197000000000918004b0000000005008019000000000118013f000006060110009c00000000010700190000000001056019000000000101004b0000010d0000c13d00000000010004140000060a0510009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f00000000040104330000060a0540009c000001740000413d00000614020000410000000000230435000000a40210003900000613040000410000000000420435000000840210003900000008040000390000000000420435000000640110003900000020020000390000000000210435000005fe01000041000005fe0230009c0000000001034019000000400110021000000615011001c7000017f600010430000000c0022002100000061002200197000000400110021000000630011000410000063101100197000000000112019f00000060024002100000063202200197000000000121019f00000633011001c70000800302000039000000000300001900000000040000190000000005000019000000000600001917f417e00000040f00030000000103550000006001100270000105fe0010019d000005fe041001970000003f014000390000063405100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000006070630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f00000000005404350000000102200190000002640000613d0000000901000029000000000101004b000012940000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b000002be0000c13d0000000702000029000000000121034f000000000101043b000000800210008c000003240000413d00000080021002700000063a0310009c000000000201a0190000063a0310009c0000000003000019000000100300203900000008043001bf000006070520009c00000000030420190000004004200270000006070520009c000000000204201900000004043001bf000005fe0520009c00000000030420190000002004200270000005fe0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b0000033b0000613d00000000040304330000063904400197000000f805200210000000000445019f0000063b0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000902000029000000210220003900000000001204350000047b0000013d000000000221034f000000000202043b0000060b02200197000006160720009c0000026e0000c13d000000430260008c000002a00000213d0000061401000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000062901000041000000c40010043f0000062a01000041000000e40010043f0000062b01000041000017f6000104300000000207000367000080060540008c00000000050000190000024b0000c13d000000040560008c00000000050000190000024b0000413d000000000827034f0000000105000039000000000808043b0000060b088001970000060c0980009c0000024a0000613d0000060d0980009c0000024a0000613d0000060e0980009c0000024a0000613d0000060f0580009c00000000050000190000000105006039000000010550018f0000000008260019000005fe02200197000000000227034f000000000703004b0000027a0000c13d000000000368004b000012b00000413d0000000003000031000000000683004b000012b00000413d00000611060000410000061207000041000000000505004b00000000050600190000000005076019000000c0011002100000061001100197000000000115019f0000000003830049000005fe0330019700000000023203df00000000011203af000000000204001917f417ea0000040f000002890000013d0000000001010433000005fe02000041000005fe0410009c0000000001028019000005fe0430009c000000000203401900000040022002100000006001100210000000000121019f000017f600010430000006170120009c000000430000613d0000061401000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000061801000041000000c40010043f0000061901000041000017f600010430000000000668004b000012b00000413d0000000006000031000000000786004b000012b00000413d0000000006860049000005fe0660019700000000026203df000000c001100210000006100110019700000611011001c700000000011203af0000800902000039000000000600001917f417ea0000040f000300000001035500000000030100190000006003300270000105fe0030019d000005fe033001970000000102200190000003090000613d17f417c20000040f0000000002010019000000400100043d000b00000001001d17f417310000040f0000000b040000290000000001410049000005fe02000041000005fe0310009c0000000001028019000005fe0340009c000000000204401900000040022002100000006001100210000000000121019f000017f50001042e0000002402500039000000000221034f000000000202043b000b00000002001d000006080220009c0000010d0000213d000000e402300039000000000221034f0000004403500039000000000131034f000000000101043b000a00000001001d000000000102043b0000061a02000041000000800020043f0000060802400197000800000002001d000000840020043f0000060801100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c0000039d0000c13d0000000103000031000000200130008c00000020040000390000000004034019000003c90000013d000000710320008c000003410000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d00000000044200190000060605000041000000000643004b0000000006000019000000000605801900000606044001970000060607300197000000000847004b0000000005008019000000000447013f000006060440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000003430019000000000131034f000000000101043b000006070410009c0000010d0000213d000000000212004900000020033000390000060604000041000000000523004b0000000005000019000000000504201900000606022001970000060606300197000000000726004b0000000004008019000000000226013f000006060220009c00000000020500190000000002046019000000000202004b0000010d0000c13d0000000002000414000000000131001a000005fe04300197000012b00000413d0000000003000031000000000513004b000012b00000413d00000002044003670000060a0520009c000007d60000413d000000400100043d00000044021000390000061303000041000000000032043500000024021000390000000803000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f6000104300000001f0430018f0000000502300272000003140000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000030d0000413d000000000504004b000003220000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017f600010430000000400200043d000900000002001d000006380220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000003300000413d00000009030000290000000003030433000000000303004b000004720000c13d000006550100004100000000001004350000003201000039000000040010043f0000065601000041000017f600010430000000020120008c000003f00000c13d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005ad0000413d00000080012002700000063a0320009c000000000102a0190000063a0320009c0000000003000019000000100300203900000008043001bf000006070510009c00000000030420190000004004100270000006070510009c000000000104201900000004043001bf000005fe0510009c00000000030420190000002004100270000005fe0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000038a0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003820000413d000000000500004b0000038c0000613d0000000005010433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000005ca0000013d000005fe02000041000005fe0310009c0000000001028019000000c0011002100000061b011001c70000000b0200002917f417e50000040f00000000030100190000006003300270000005fe03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003b60000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003ae0000413d000000000705004b000003c50000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000044c0000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000061c030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000061d05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c0000054c0000c13d000000010200003900000001010000310000055d0000013d000000010120008c000004cc0000c13d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d000000000201043b000000800120008c0000063f0000413d00000080012002700000063a0320009c000000000102a0190000063a0320009c0000000003000019000000100300203900000008043001bf000006070510009c00000000030420190000004004100270000006070510009c000000000104201900000004043001bf000005fe0510009c00000000030420190000002004100270000005fe0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004390000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004310000413d000000000500004b0000043b0000613d0000000005010433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000065c0000013d000000400200043d0000001f0430018f0000000503300272000004590000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004510000413d000000000504004b000004680000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005fe010000410000000103000031000005fe0430009c0000000003018019000005fe0420009c000000000102401900000040011002100000006002300210000000000112019f000017f600010430000000f8031002100000060604000041000000000101004b0000000001030019000000000104601900000000030204330000063903300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c000004de0000413d00000080012002700000063a0320009c000000000102a0190000063a0320009c0000000003000019000000100300203900000008043001bf000006070510009c00000000030420190000004004100270000006070510009c000000000104201900000004043001bf000005fe0510009c00000000030420190000002004100270000005fe0510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004b90000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004b10000413d000000000500004b000004bb0000613d0000000005010433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000004fb0000013d000000400100043d00000044021000390000063503000041000000000032043500000024021000390000001703000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400100043d000006380310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004e80000413d0000000004010433000000000404004b0000033b0000613d000000f8042002100000060605000041000000000202004b0000000002040019000000000205601900000000040304330000063904400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c000006ac0000413d00000080023002700000063a0430009c000000000203a0190000063a0430009c0000000004000019000000100400203900000008054001bf000006070620009c00000000040520190000004005200270000006070620009c000000000205201900000004054001bf000005fe0620009c00000000040520190000002005200270000005fe0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006070750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005390000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005310000413d000000000600004b0000053b0000613d0000000006020433000000000606004b0000033b0000613d00000000060504330000063906600197000000f807400210000000000667019f0000063b0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006c90000013d000005fe04000041000005fe0530009c000000000304801900000060033002100000004002200210000000000223019f000005fe0310009c0000000001048019000000c001100210000000000112019f0000000b0200002917f417e00000040f000000010220018f00030000000103550000006001100270000105fe0010019d000005fe011001970000006003000039000700000003001d000000000301004b0000057d0000c13d00000007010000290000000031010434000300000003001d000000000202004b0000061a0000c13d000000000201004b0000075d0000c13d000000400300043d000b00000003001d000006140100004100000000001304350000000401300039000000060200002900000000002104350000002402300039000000050100002917f4171e0000040f0000000b040000290000000001410049000005fe02000041000005fe0310009c0000000001028019000005fe0340009c000000000204401900000040022002100000006001100210000000000121019f000017f600010430000006070310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f00000005055002720000059d0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005950000413d000000000604004b000005610000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000005610000013d000000400100043d000006380310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005b70000413d0000000004010433000000000404004b0000033b0000613d000000f8042002100000060605000041000000000202004b0000000002040019000000000205601900000000040304330000063904400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000007680000413d00000080023002700000063a0430009c000000000203a0190000063a0430009c0000000004000019000000100400203900000008054001bf000006070620009c00000000040520190000004005200270000006070620009c000000000205201900000004054001bf000005fe0620009c00000000040520190000002005200270000005fe0620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000006070750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000006070000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005ff0000413d000000000600004b000006090000613d0000000006020433000000000606004b0000033b0000613d00000000060504330000063906600197000000f807400210000000000667019f0000063b0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000007850000013d000000000201004b00000a320000c13d0000061e0100004100000000001004390000000b010000290000000400100443000005fe010000410000000002000414000005fe0320009c0000000001024019000000c0011002100000061f011001c7000080020200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000000000101004b00000a2e0000c13d000000400100043d00000044021000390000062803000041000000000032043500000024021000390000001d03000039000000000032043500000614020000410000000000210435000000040210003900000006030000290000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400100043d000006380310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000006490000413d0000000004010433000000000404004b0000033b0000613d000000f8042002100000060605000041000000000202004b0000000002040019000000000205601900000000040304330000063904400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c000009c00000413d00000080032002700000063a0420009c000000000302a0190000063a0420009c0000000004000019000000100400203900000008054001bf000006070630009c00000000040520190000004005300270000006070630009c000000000305201900000004054001bf000005fe0630009c00000000040520190000002005300270000005fe0630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000006070750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006990000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000006910000413d000000000600004b0000069b0000613d0000000006030433000000000606004b0000033b0000613d00000000060504330000063906600197000000f807400210000000000667019f0000063b0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000009dd0000013d000000400200043d000006380420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006b60000413d0000000005020433000000000505004b0000033b0000613d000000f8053002100000060606000041000000000303004b0000000003050019000000000306601900000000050404330000063905500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006d70000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b000006d00000413d000000000143001900000000000104350000000004020433000000000504004b000006e40000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b000006dd0000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000006070220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f000006380110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000063c0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000bcd0000413d00000080021002700000063a0310009c000000000201a0190000063a0310009c0000000003000019000000100300203900000008043001bf000006070520009c00000000030420190000004004200270000006070520009c000000000204201900000004043001bf000005fe0520009c00000000030420190000002004200270000005fe0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000007480000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007400000413d000000000400004b0000074a0000613d00000005040000290000000004040433000000000404004b0000033b0000613d00000000040304330000063904400197000000f805200210000000000445019f0000063b0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000bed0000013d000005fe020000410000000304000029000005fe0340009c00000000030200190000000003044019000005fe0410009c000000000102801900000060011002100000004002300210000000000121019f000017f600010430000000400200043d000006380420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007720000413d0000000005020433000000000505004b0000033b0000613d000000f8053002100000060606000041000000000303004b0000000003050019000000000306601900000000050404330000063905500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a6f0000413d00000080043002700000063a0530009c000000000403a0190000063a0530009c0000000005000019000000100500203900000008065001bf000006070740009c00000000050620190000004006400270000006070740009c000000000406201900000004065001bf000005fe0740009c00000000050620190000002006400270000005fe0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006070860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007c30000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000007bb0000413d000000000700004b000007c50000613d0000000007040433000000000707004b0000033b0000613d00000000070604330000063907700197000000f808500210000000000778019f0000063b0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000a8c0000013d0000000001130049000005fe0110019700000000011403df000000c002200210000006100220019700000612022001c700000000012103af000080100200003917f417ef0000040f00000000030100190000006003300270000105fe0030019d000005fe033001970003000000010355000000010220019000000add0000613d0000003f013000390000063401100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006070510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000008010000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007f90000413d000000000400004b000008030000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008130000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b0000080b0000413d000000000604004b000008220000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ce40000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b0000060606000041000000000753004b0000000007000019000000000706801900000606055001970000060608300197000000000958004b0000000006008019000000000558013f000006060550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000006070350009c0000010d0000213d0000000503500210000000000434004900000020061000390000060601000041000000000746004b0000000007000019000000000701201900000606044001970000060608600197000000000948004b0000000001008019000000000448013f000006060440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d00000020041000390000064105500198000008610000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000008590000413d000000000200004b000008630000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000006070520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f000005fe02000041000005fe0340009c0000000003020019000000000304401900000040033002100000000001010433000005fe0410009c00000000010280190000006001100210000000000131019f0000000003000414000005fe0430009c0000000002034019000000c002200210000000000112019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b0000060606000041000000000754004b0000000007000019000000000706801900000606055001970000060608400197000000000958004b0000000006008019000000000558013f000006060550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000004140019000000000143034f000000000101043b000006070310009c0000010d0000213d000000000212004900000020034000390000060604000041000000000523004b0000000005000019000000000504201900000606022001970000060606300197000000000726004b0000000004008019000000000226013f000006060220009c00000000020500190000000002046019000000000202004b0000010d0000c13d0000000002000414000000000131001a000005fe04300197000012b00000413d0000000003000031000000000513004b000012b00000413d0000000204400367000005fe0520009c000002f70000213d0000000001130049000005fe0110019700000000011403df000000c002200210000006100220019700000612022001c700000000012103af000080100200003917f417ef0000040f00000000030100190000006003300270000105fe0030019d000005fe03300197000300000001035500000001022001900000157d0000613d0000003f013000390000063401100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000006070510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000008e70000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000008df0000413d000000000400004b000008e90000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008f90000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008f10000413d000000000604004b000009080000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ce40000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000643030000410000000000320435000001c0030000390000000000310435000006440310009c0000012b0000213d000001e003100039000000400030043f000005fe03000041000005fe0420009c000000000203801900000040022002100000000001010433000005fe0410009c00000000010380190000006001100210000000000121019f0000000002000414000005fe0420009c0000000002038019000000c002200210000000000112019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b000006450300004100000000003204350000008003400039000000000013043500000060014000390000064603000041000000000031043500000040014000390000064703000041000000000031043500000080010000390000000000140435000006480140009c0000012b0000213d0000000904000029000000a001400039000000400010043f000005fe01000041000005fe0320009c000000000201801900000040022002100000000003040433000005fe0430009c00000000030180190000006003300210000000000223019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d000000000301043b000000400100043d0000004202100039000000070400002900000000004204350000002002100039000006490400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006240310009c0000012b0000213d0000008003100039000000400030043f000005fe03000041000005fe0420009c000000000203801900000040022002100000000001010433000005fe0410009c00000000010380190000006001100210000000000121019f0000000002000414000005fe0420009c0000000002038019000000c002200210000000000112019f00000640011001c7000080100200003917f417e50000040f0000000102200190000012920000c13d0000010d0000013d000000400300043d000006380430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000009ca0000413d0000000005030433000000000505004b0000033b0000613d000000f8052002100000060606000041000000000202004b0000000002050019000000000206601900000000050404330000063905500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b5f0000413d00000080042002700000063a0520009c000000000402a0190000063a0520009c0000000005000019000000100500203900000008065001bf000006070740009c00000000050620190000004006400270000006070740009c000000000406201900000004065001bf000005fe0740009c00000000050620190000002006400270000005fe0740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000006070860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f000000020650003900000000066404360000002107500039000000050770027200000a1b0000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b00000a130000413d000000000700004b00000a1d0000613d0000000007040433000000000707004b0000033b0000613d00000000070604330000063907700197000000f808500210000000000778019f0000063b0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b7c0000013d00000007010000290000000001010433000000000201004b00000a5c0000613d0000060602000041000000200310008c000000000300001900000000030240190000060601100197000000000401004b000000000200a019000006060110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a5c0000c13d000000400100043d00000064021000390000062603000041000000000032043500000044021000390000062703000041000000000032043500000024021000390000002a03000039000000000032043500000614020000410000000000210435000000040210003900000006030000290000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f600010430000000400300043d0000002401300039000000090200002900000000002104350000061a010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000af80000c13d0000000103000031000000200130008c0000002004000039000000000403401900000b2b0000013d000000400400043d000006380540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000a790000413d0000000006040433000000000606004b0000033b0000613d000000f8063002100000060607000041000000000303004b0000000003060019000000000307601900000000060504330000063906600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c620000413d00000080053002700000063a0630009c000000000503a0190000063a0630009c0000000006000019000000100600203900000008076001bf000006070850009c00000000060720190000004007500270000006070850009c000000000507201900000004076001bf000005fe0850009c00000000060720190000002007500270000005fe0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006070970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000aca0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000ac20000413d000000000800004b00000acc0000613d0000000008050433000000000808004b0000033b0000613d00000000080704330000063908800197000000f809600210000000000889019f0000063b0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000c7f0000013d0000001f0430018f000000050230027200000ae80000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000ae10000413d000000000504004b00000af60000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017f600010430000005fe02000041000005fe0310009c00000000010280190000000704000029000005fe0340009c00000000020440190000004002200210000000c001100210000000000121019f00000620011001c70000000b0200002917f417e50000040f000000070a00002900000000030100190000006003300270000005fe03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000b170000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000b0f0000413d000000000705004b00000b270000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000c3c0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000006070410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000cd00000c13d00000044021000390000000a03000029000000000032043500000020021000390000061c03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006240310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006250310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000061d040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000df20000c13d0000000102000039000000010100003100000e050000013d000000400400043d000006380540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b690000413d0000000006040433000000000606004b0000033b0000613d000000f8062002100000060607000041000000000202004b0000000002060019000000000207601900000000060504330000063906600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000cf60000413d00000080052002700000063a0620009c000000000502a0190000063a0620009c0000000006000019000000100600203900000008076001bf000006070850009c00000000060720190000004007500270000006070850009c000000000507201900000004076001bf000005fe0850009c00000000060720190000002007500270000005fe0850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000006070970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000bba0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000bb20000413d000000000800004b00000bbc0000613d0000000008050433000000000808004b0000033b0000613d00000000080704330000063908800197000000f809600210000000000889019f0000063b0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000d130000013d000000400200043d000500000002001d000006380220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000bd90000413d00000005030000290000000003030433000000000303004b0000033b0000613d000000f8031002100000060604000041000000000101004b0000000001030019000000000104601900000000030204330000063903300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d00000000044300190000060605000041000000000641004b0000000006000019000000000605801900000606044001970000060607100197000000000847004b0000000005008019000000000447013f000006060440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000006070510009c0000010d0000213d000000000513004900000020034000390000060604000041000000000653004b0000000006000019000000000604201900000606055001970000060607300197000000000857004b0000000004008019000000000557013f000006060550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000f240000c13d000000000132034f000000000101043b000000010200008a0000060603000041000000000221004b000000000200001900000000020320190000060601100197000006060410009c00000000030080190000060601100167000006060110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010820000c13d000000400100043d000400000001001d000006380110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000063b02000041000000000021043500000001010000390000000000130435000010820000013d000000400200043d0000001f0430018f000000050330027200000c490000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c410000413d000000000504004b00000c580000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005fe010000410000000103000031000005fe0430009c0000000003018019000005fe0420009c000000000102401900000040011002100000006002300210000000000112019f000017f600010430000000400500043d000006380650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c6c0000413d0000000007050433000000000707004b0000033b0000613d000000f8073002100000060608000041000000000303004b0000000003070019000000000308601900000000070604330000063907700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d740000413d00000080063002700000063a0730009c000000000603a0190000063a0730009c0000000007000019000000100700203900000008087001bf000006070960009c00000000070820190000004008600270000006070960009c000000000608201900000004087001bf000005fe0960009c00000000070820190000002008600270000005fe0960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000006070a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000cbd0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000cb50000413d000000000900004b00000cbf0000613d0000000009060433000000000909004b0000033b0000613d00000000090804330000063909900197000000f80a70021000000000099a019f0000063b0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000d910000013d00000064021000390000062103000041000000000032043500000044021000390000062203000041000000000032043500000024021000390000003603000039000000000032043500000614020000410000000000210435000000040210003900000006030000290000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f600010430000000400100043d00000044021000390000064203000041000000000032043500000024021000390000001f03000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400500043d000006380650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000d000000413d0000000007050433000000000707004b0000033b0000613d000000f8072002100000060608000041000000000202004b0000000002070019000000000208601900000000070604330000063907700197000000000227019f0000000000260435000000400600043d000006380260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000063c0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e550000413d00000080072002700000063a0820009c000000000702a0190000063a0820009c0000000008000019000000100800203900000008098001bf000006070a70009c00000000080920190000004009700270000006070a70009c000000000709201900000004098001bf000005fe0a70009c00000000080920190000002009700270000005fe0a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000006070b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d610000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d590000413d000000000a00004b00000d630000613d000000000a070433000000000a0a004b0000033b0000613d000000000a090433000006390aa00197000000f80b800210000000000aab019f0000063b0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e720000013d000000400600043d000006380760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d7e0000413d0000000008060433000000000808004b0000033b0000613d000000f8083002100000060609000041000000000303004b0000000003080019000000000309601900000000080704330000063908800197000000000338019f0000000000370435000000400700043d000006380370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000063c090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f870000413d00000080083002700000063a0930009c000000000803a0190000063a0930009c00000000090000190000001009002039000000080a9001bf000006070b80009c00000000090a2019000000400a800270000006070b80009c00000000080a2019000000040a9001bf000005fe0b80009c00000000090a2019000000200a800270000005fe0b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000006070ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000ddf0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000dd70000413d000000000b00004b00000de10000613d000000000b080433000000000b0b004b0000033b0000613d000000000b0a0433000006390bb00197000000f80c900210000000000bbc019f0000063b0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000fa40000013d000005fe04000041000005fe0520009c00000000020480190000004002200210000005fe0530009c00000000030480190000006003300210000000000223019f000005fe0310009c0000000001048019000000c001100210000000000112019f0000000b0200002917f417e00000040f000000010220018f00030000000103550000006001100270000105fe0010019d000005fe011001970000006003000039000900000003001d000000000301004b00000e250000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f5a0000c13d000000000201004b000011510000c13d000000400300043d000b00000003001d0000061401000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a0100002917f4171e0000040f0000000b040000290000000001410049000005fe02000041000005fe0310009c0000000001028019000005fe0340009c000000000204401900000040022002100000006001100210000000000121019f000017f600010430000006070310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000006070530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e450000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000e3d0000413d000000000604004b00000e090000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000e090000013d000000400700043d000006380870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e5f0000413d0000000009070433000000000909004b0000033b0000613d000000f809200210000006060a000041000000000202004b000000000209001900000000020a601900000000090804330000063909900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e7f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e780000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000e8e0000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e870000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000e9d0000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000e960000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000eac0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000ea50000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000ebb0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000eb40000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000eca0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000ec30000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000006070450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000006060a000041000000000b96004b000000000b000019000000000b0a80190000060609900197000006060c600197000000000d9c004b000000000a00801900000000099c013f000006060990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006070a60009c0000010d0000213d000000000a68004900000020089000390000060609000041000000000ba8004b000000000b000019000000000b092019000006060aa00197000006060c800197000000000dac004b0000000009008019000000000aac013f000006060aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000013f30000c13d000000000687034f000000000606043b000000010700008a0000060608000041000000000776004b000000000700001900000000070820190000060606600197000006060960009c00000000080080190000060606600167000006060660009c00000000070860190000006006000039000000000707004b000014710000c13d000006380650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000063b070000410000000000760435000000010600003900000000006504350000000006050019000014710000013d000000380210008c000010650000413d0000002002100270000005fe0310009c00000000030100190000000003022019000005fe0210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d000006380440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f420000413d00000004040000290000000004040433000000000404004b0000033b0000613d00000000040304330000063904400197000000f805200210000000000445019f0000063d044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010820000013d000000000201004b00000f710000c13d0000061e0100004100000000001004390000000b010000290000000400100443000005fe010000410000000002000414000005fe0320009c0000000001024019000000c0011002100000061f011001c7000080020200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000000000101004b0000062d0000613d00000009010000290000000001010433000000000201004b000000430000613d0000060602000041000000200310008c000000000300001900000000030240190000060601100197000000000401004b000000000200a019000006060110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a470000613d000000430000013d000000400800043d000006380980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000f910000413d000000000a080433000000000a0a004b0000033b0000613d000000f80a300210000006060b000041000000000303004b00000000030a001900000000030b6019000000000a090433000006390aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000fb10000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000faa0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000fc00000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000fb90000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000fcf0000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000fc80000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000fde0000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000fd70000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b00000fed0000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000fe60000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b00000ffc0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b00000ff50000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b0000100b0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b000010040000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000006070450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000006060a000041000000000b96004b000000000b000019000000000b0a80190000060609900197000006060c600197000000000d9c004b000000000a00801900000000099c013f000006060990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000006070a60009c0000010d0000213d000000000a68004900000020089000390000060609000041000000000ba8004b000000000b000019000000000b092019000006060aa00197000006060c800197000000000dac004b0000000009008019000000000aac013f000006060aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000014250000c13d000000000687034f000000000606043b000000010700008a0000060608000041000000000776004b000000000700001900000000070820190000060606600197000006060960009c00000000080080190000060606600167000006060660009c00000000070860190000006006000039000000000707004b000015040000c13d000006380650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000063b070000410000000000760435000000010600003900000000006504350000000006050019000015040000013d000000400200043d000400000002001d000006380220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010710000413d00000004030000290000000003030433000000000303004b0000033b0000613d000000f80110021000000000030204330000063903300197000000000113019f0000060601100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b000010f70000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b0000060604000041000000000659004b0000000006000019000000000604801900000606055001970000060607900197000000000857004b0000000004008019000000000557013f000006060550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000006070a20009c0000010d0000213d00000000032300490000002009900039000006060a000041000000000b39004b000000000b000019000000000b0a201900000606033001970000060609900197000000000c39004b000000000a008019000000000339013f000006060330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d00000000034500190000000003630019000000000373001900000000038300190000000002230019000000000301043300000000023200190000060702200197000000380320008c000011990000413d0000002003200270000005fe0420009c00000000040200190000000004032019000005fe0320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d000006380560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010e10000413d0000000005060433000000000505004b0000033b0000613d00000000050404330000063905500197000000f807300210000000000557019f0000063f055001c700000000005404350000000303300210000000f80330008900000000023201cf00000021036000390000000000230435000011b30000013d00000636010000410000000000100439000005fe010000410000000002000414000005fe0320009c0000000001024019000000c00110021000000637011001c70000800b0200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000115c0000413d00000080021002700000063a0310009c000000000201a0190000063a0310009c0000000003000019000000100300203900000008043001bf000006070520009c00000000030420190000004004200270000006070520009c000000000204201900000004043001bf000005fe0520009c00000000030420190000002004200270000005fe0520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000006070640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f00000002043000390000000004420436000000210530003900000005055002720000113e0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000011360000413d000000000500004b000011400000613d0000000005020433000000000505004b0000033b0000613d00000000050404330000063905500197000000f806300210000000000556019f0000063b0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c000000000100201900000021032000390000000000130435000011790000013d000005fe020000410000000804000029000005fe0340009c00000000030200190000000003044019000005fe0410009c000000000102801900000060011002100000004002300210000000000121019f000017f600010430000000400200043d000006380320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011660000413d0000000004020433000000000404004b0000033b0000613d000000f8041002100000060605000041000000000101004b0000000001040019000000000105601900000000040304330000063904400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011860000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b0000117f0000413d00000000024300190000064a0400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000006070420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000108a0000013d000000400600043d000006380360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a000011a30000413d0000000004060433000000000404004b0000033b0000613d000000f80220021000000000040304330000063904400197000000000242019f0000063e02200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b0000060607000041000000000854004b0000000008000019000000000807801900000606055001970000060609400197000000000a59004b0000000007008019000000000559013f000006060550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000006070340009c0000010d0000213d000000000242004900000020055000390000060603000041000000000725004b0000000007000019000000000703201900000606022001970000060608500197000000000928004b0000000003008019000000000228013f000006060220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000011eb0000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000011e40000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000011fc0000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011f40000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b0000120d0000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012050000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b0000121e0000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012160000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b0000122f0000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012270000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b000012400000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012380000413d0000000008870019000000000008043500000000066700190000001f0740018f000000200860003900000002055003670000000509400272000012510000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012490000413d000000000a07004b000012600000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b0000126e0000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012670000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000006070510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f000005fe01000041000005fe0430009c000000000301801900000040033002100000000002020433000005fe0420009c00000000020180190000006002200210000000000232019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f00000001022001900000010d0000613d000000000101043b000900000001001d0000000b01000029000000e4021000390000000201000367000000000221034f000000000202043b0000060802200198000012b60000c13d0000000b03000029000000a402300039000000000221034f0000006403300039000000000331034f000000000303043b000000000402043b00000000523400a9000000000504004b000012a80000613d00000000544200d9000000000334004b000012b00000c13d0000000b030000290000012403300039000000000131034f000000000101043b000000000121001a000700000001001d000012b00000413d000012bb0000013d000006550100004100000000001004350000001101000039000000040010043f0000065601000041000017f6000104300000000b020000290000012402200039000000000121034f000000000101043b000700000001001d0000064b01000041000000000010043900000008010000290000000400100443000005fe010000410000000002000414000005fe0320009c0000000001024019000000c0011002100000061f011001c70000800a0200003917f417e50000040f00000001022001900000010d0000613d000000000101043b0000000702000029000000000112004b000012e20000a13d000000400100043d00000064021000390000065303000041000000000032043500000044021000390000065403000041000000000032043500000024021000390000002203000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f60001043000000000030000310000000b020000290000000001230049000000230410008a000001e4022000390000000201000367000000000221034f000000000202043b0000060605000041000000000642004b0000000006000019000000000605801900000606044001970000060607200197000000000847004b0000000005008019000000000447013f000006060440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000002420019000000000121034f000000000101043b000006070410009c0000010d0000213d000000000413004900000020052000390000060602000041000000000645004b0000000006000019000000000602201900000606044001970000060607500197000000000847004b0000000002008019000000000447013f000006060440009c000000000206c019000000000202004b0000010d0000c13d0000003f02100039000000200400008a000000000442016f000000400200043d0000000004420019000000000624004b00000000060000190000000106004039000006070740009c0000012b0000213d00000001066001900000012b0000c13d000000400040043f00000000041204360000000006510019000000000336004b0000010d0000213d0000001f0310018f000000020550036700000005061002720000132b0000613d000000000700001900000005087002100000000009840019000000000885034f000000000808043b00000000008904350000000107700039000000000867004b000013230000413d000000000703004b0000133a0000613d0000000506600210000000000565034f00000000066400190000000303300210000000000706043300000000073701cf000000000737022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000373019f0000000000360435000000000114001900000000000104350000000001020433000000410110008c000013580000c13d00000041012000390000000001010433000000ff0310018f0000001d0130008a000000030500008a000000000151004b0000136a0000213d000000400100043d00000044021000390000065203000041000000000032043500000024021000390000001603000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000400100043d00000044021000390000064c03000041000000000032043500000024021000390000001d03000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000000404043300000040012000390000000002010433000000400100043d0000064d0520009c000013810000413d00000044021000390000065103000041000000000032043500000024021000390000000903000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000615011001c7000017f600010430000000600510003900000000002504350000004002100039000000000042043500000020021000390000000000320435000000090200002900000000002104350000000000000435000005fe020000410000000003000414000005fe0430009c0000000003028019000005fe0410009c00000000010280190000004001100210000000c002300210000000000112019f0000064e011001c7000000010200003917f417e50000040f00000000030100190000006003300270000005fe03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000504400272000013a70000613d00000000060000190000000507600210000000000871034f000000000808043b00000000008704350000000106600039000000000746004b000013a00000413d000000000605004b000013b50000613d00000003055002100000000504400210000000000604043300000000065601cf000000000656022f000000000741034f000000000707043b0000010005500089000000000757022f00000000055701cf000000000565019f0000000000540435000100000003001f00030000000103550000000102200190000013cd0000613d000000000100043300000608011001970000000802000029000000000221004b0000000002000019000000010200c039000000000101004b0000000001000019000000010100603900000000011201a00000064f01000041000000000100c019000000400200043d0000000000120435000005fe01000041000005fe0320009c0000000001024019000000400110021000000650011001c7000017f50001042e000000400200043d0000001f0430018f0000000503300272000013da0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000013d20000413d000000000504004b000013e90000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005fe010000410000000103000031000005fe0430009c0000000003018019000005fe0420009c000000000102401900000040011002100000006002300210000000000112019f000017f600010430000000380760008c000014570000413d0000002007600270000005fe0860009c00000000080600190000000008072019000005fe0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006380950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000140e0000413d0000000009050433000000000909004b0000033b0000613d00000000090804330000063909900197000000f80a70021000000000099a019f0000063d099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000014710000013d000000380760008c000014ea0000413d0000002007600270000005fe0860009c00000000080600190000000008072019000005fe0760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c00000000080000190000000108002039000006380950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000014400000413d0000000009050433000000000909004b0000033b0000613d00000000090804330000063909900197000000f80a70021000000000099a019f0000063d099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000015040000013d000006380750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000014600000413d0000000008050433000000000808004b0000033b0000613d000000f80660021000000000080704330000063908800197000000000668019f000006060660016700000000006704350000000006050019000000400500043d000006380750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000147b0000413d0000000009050433000000000909004b0000033b0000613d000000000907043300000639099001970000063e099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000006060a000041000000000d9c004b000000000d000019000000000d0a80190000060609900197000006060ec00197000000000f9e004b000000000a00801900000000099e013f000006060990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006070db0009c0000010d0000213d0000000007b70049000000200cc00039000006060d000041000000000e7c004b000000000e000019000000000e0d20190000060607700197000006060cc00197000000000f7c004b000000000d00801900000000077c013f000006060770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000060709700197000000380790008c000015980000413d0000002007900270000005fe0890009c000000000709a019000005fe0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006380b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000014d40000413d000000000b070433000000000b0b004b0000033b0000613d000000000b0a0433000006390bb00197000000f80c800210000000000bbc019f0000063f0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000015b10000013d000006380750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000014f30000413d0000000008050433000000000808004b0000033b0000613d000000f80660021000000000080704330000063908800197000000000668019f000006060660016700000000006704350000000006050019000000400500043d000006380750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000150e0000413d0000000009050433000000000909004b0000033b0000613d000000000907043300000639099001970000063e099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000006060a000041000000000d9c004b000000000d000019000000000d0a80190000060609900197000006060ec00197000000000f9e004b000000000a00801900000000099e013f000006060990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000006070db0009c0000010d0000213d0000000007b70049000000200cc00039000006060d000041000000000e7c004b000000000e000019000000000e0d20190000060607700197000006060cc00197000000000f7c004b000000000d00801900000000077c013f000006060770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b70019000000000905043300000000079700190000060709700197000000380790008c0000165b0000413d0000002007900270000005fe0890009c000000000709a019000005fe0890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d000006380b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000015670000413d000000000b070433000000000b0b004b0000033b0000613d000000000b0a0433000006390bb00197000000f80c800210000000000bbc019f0000063f0bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000016740000013d0000001f0430018f0000000502300272000015880000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000015810000413d000000000504004b000015960000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017f600010430000000400700043d000006380a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000015a10000413d000000000a070433000000000a0a004b0000033b0000613d000000f809900210000000000a080433000006390aa001970000000009a9019f0000063e099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000006060a000041000000000b83004b000000000b000019000000000b0a80190000060608800197000006060c300197000000000d8c004b000000000a00801900000000088c013f000006060880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000006070480009c0000010d0000213d000000000489004900000020093000390000060603000041000000000a49004b000000000a000019000000000a0320190000060604400197000006060b900197000000000c4b004b000000000300801900000000044b013f000006060440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006330a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b000015e90000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000015e20000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b000015f80000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b000015f10000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b000016070000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000016000000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a800272000016180000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000016100000413d000000000b06004b000016270000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000016350000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b0000162e0000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000006070510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000005fe01000041000005fe0240009c0000000002010019000000000204401900000040022002100000000003030433000005fe0430009c00000000030180190000006003300210000000000223019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f0000000102200190000012920000c13d0000010d0000013d000000400700043d000006380a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000016640000413d000000000a070433000000000a0a004b0000033b0000613d000000f809900210000000000a080433000006390aa001970000000009a9019f0000063e099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000006060a000041000000000b82004b000000000b000019000000000b0a80190000060608800197000006060c200197000000000d8c004b000000000a00801900000000088c013f000006060880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000006070480009c0000010d0000213d000000000489004900000020092000390000060602000041000000000a49004b000000000a000019000000000a0220190000060604400197000006060b900197000000000c4b004b000000000200801900000000044b013f000006060440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d0000002004200039000006400a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b000016ac0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000016a50000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b000016bb0000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b000016b40000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000016ca0000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000016c30000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000016db0000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000016d30000413d000000000b06004b000016ea0000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b000016f80000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000016f10000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000006070510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f000005fe01000041000005fe0340009c0000000003010019000000000304401900000040033002100000000002020433000005fe0420009c00000000020180190000006002200210000000000232019f0000000003000414000005fe0430009c0000000001034019000000c001100210000000000121019f00000640011001c7000080100200003917f417e50000040f0000000102200190000012920000c13d0000010d0000013d00000000030104330000000002320436000000000403004b0000172a0000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000017230000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000017400000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000017390000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a000000000310003100000606010000410000005f0230008c000000000200001900000000020120190000060604300197000000000504004b0000000001008019000006060440009c000000000102c019000000000101004b0000178d0000613d00000002010003670000004402100370000000000202043b000006070420009c0000178d0000213d00000000032300490000060604000041000002600530008c000000000500001900000000050440190000060603300197000000000603004b000000000400a019000006060330009c00000000030500190000000003046019000000000303004b0000178d0000c13d0000000003000411000080010330008c0000178b0000c13d000000000300041200000608033001970000000004000410000000000343004b0000178b0000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b0000178f0000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d000005fe02000041000005fe0310009c0000000001028019000000c001100210000080010200003917f417e00000040f000000010300002900030000000103550000006001100270000105fe0010019d000000200130011a00000001012001950000000101200190000017a70000613d0000000001000019000017f50001042e0000000001000019000017f60001043000000000431200a900000000422300d9000000000112004b000017bc0000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b0000177c0000613d000005fe02000041000005fe0410009c0000000001028019000000c00110021000000640011001c700008009020000390000800104000039000000000500001917f417e00000040f0000000003000415000000020330008a00000020033000c9000017840000013d000000400100043d00000064021000390000065703000041000000000032043500000044021000390000065803000041000000000032043500000024021000390000002503000039000000000032043500000614020000410000000000210435000000040210003900000020030000390000000000320435000005fe02000041000005fe0310009c0000000001028019000000400110021000000623011001c7000017f600010430000006550100004100000000001004350000001101000039000000040010043f0000065601000041000017f600010430000000400100043d000006590210009c000017c90000813d0000002002100039000000400020043f0000000000010435000000000001042d000006550100004100000000001004350000004101000039000000040010043f0000065601000041000017f600010430000000000100041200000608011001970000000002000410000000000121004b000017d80000c13d0000000001000411000080010110008c000017da0000613d000000000001042d0000000001000019000017f50001042e000006550100004100000000001004350000000101000039000000040010043f0000065601000041000017f600010430000017e3002104210000000102000039000000000001042d0000000002000019000000000001042d000017e8002104230000000102000039000000000001042d0000000002000019000000000001042d000017ed002104210000000102000039000000000001042d0000000002000019000000000001042d000017f2002104230000000102000039000000000001042d0000000002000019000000000001042d000017f400000432000017f50001042e000017f600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d3827000000000000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f190100000000000000000000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f395369676e6174757265206c656e67746820697320696e636f72726563740000007fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a10000000000000000000000000000000000000080000000000000000000000000202bcce7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000496e76616c69642073000000000000000000000000000000000000000000000076206973206e656974686572203237206e6f722032380000000000000000000075650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f7065000000000000000000000000000000000000000000000000ffffffffffffffe0f02ad7a6c9bd15b4a609dc9f1d09d0fe7738d949cfb17d2adf03465aa5b8d4d8", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/DefaultAccountNoSecurity.json b/src/deps/contracts/DefaultAccountNoSecurity.json index 6ecb63b9..a9fe4831 100644 --- a/src/deps/contracts/DefaultAccountNoSecurity.json +++ b/src/deps/contracts/DefaultAccountNoSecurity.json @@ -539,8 +539,8 @@ "type": "receive" } ], - "bytecode": "0x0004000000000002000b00000000000200000000030100190000006003300270000005f30430019700030000004103550002000000010355000005f30030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000004000031000000040140008c000000410000413d0000000201000367000000000201043b000000e002200270000005f50320009c000000450000a13d000005f60320009c000000a90000613d000005f70320009c000000ea0000613d000005f80220009c000000a60000c13d000000040240008a000005fb03000041000000200420008c00000000040000190000000004034019000005fb05200197000000000605004b000000000300a019000005fb0550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000005fc0310009c0000010d0000213d0000000001120049000005fb02000041000002600310008c00000000030000190000000003024019000005fb01100197000000000401004b000000000200a019000005fb0110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d000000200100003900000100001004430000012000000443000005f401000041000017c70001042e000000000104004b000000a60000c13d0000000001000019000017c70001042e000005f90320009c000000eb0000613d000005fa0220009c000000a60000c13d000000040240008a000005fb03000041000000600520008c00000000050000190000000005034019000005fb02200197000000000602004b000000000300a019000005fb0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000005fc0320009c0000010d0000213d00000004052000390000000003540049000005fb06000041000002600730008c00000000070000190000000007064019000005fb03300197000000000803004b000000000600a019000005fb0330009c00000000030700190000000003066019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d0000000003000412000005fd063001970000000003000410000000000636004b000000430000c13d0000022406200039000000000661034f0000000007240049000000230770008a000000000606043b000005fb08000041000000000976004b00000000090000190000000009088019000005fb07700197000005fb0a600197000000000b7a004b000000000800801900000000077a013f000005fb0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000005fc0760009c0000010d0000213d00000000076400490000002004500039000005fb08000041000000000974004b00000000090000190000000009082019000005fb07700197000005fb0a400197000000000b7a004b000000000800801900000000077a013f000005fb0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000060601000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000061e01000041000000c40010043f0000061f01000041000000e40010043f0000061d01000041000017c80001043017c616d70000040f0000000001000019000017c70001042e000000040240008a000005fb03000041000000600620008c00000000060000190000000006034019000005fb02200197000000000702004b000000000300a019000005fb0220009c00000000020600190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000702043b000005fc0270009c0000010d0000213d00000004067000390000000002640049000005fb03000041000002600820008c00000000080000190000000008034019000005fb02200197000000000902004b000000000300a019000005fb0220009c00000000020800190000000002036019000000000202004b0000010d0000c13d0000000002000411000080010220008c000000430000c13d0000000002000412000005fd022001970000000003000410000000000232004b000000430000c13d0000012402700039000000000321034f0000004402700039000000000221034f000000000202043b000005fd02200197000000000303043b000005fe0830009c000001310000413d00000044015000390000060502000041000000000021043500000024015000390000000802000039000000000021043500000606010000410000000000150435000000040150003900000020020000390000000000210435000005f301000041000005f30250009c0000000001054019000000400110021000000607011001c7000017c80001043017c615de0000040f000000040240008a000005fb03000041000000600520008c00000000050000190000000005034019000005fb02200197000000000602004b000000000300a019000005fb0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000b00000002001d000005fc0220009c0000010d0000213d0000000b020000290000000402200039000a00000002001d0000000002240049000005fb03000041000002600420008c00000000040000190000000004034019000005fb02200197000000000502004b000000000300a019000005fb0220009c00000000020400190000000002036019000000000202004b0000010f0000613d0000000001000019000017c8000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d0000000001000412000005fd011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d0000002003100039000006200400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b0000002404100039000000000034043500000024030000390000000000310435000006210310009c0000015e0000413d000006360100004100000000001004350000004101000039000000040010043f0000063701000041000017c800010430000001c405700039000000000551034f0000000007740049000000230770008a000000000505043b000005fb08000041000000000975004b00000000090000190000000009088019000005fb07700197000005fb0a500197000000000b7a004b000000000800801900000000077a013f000005fb0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000006650019000000000161034f000000000501043b000005fc0150009c0000010d0000213d00000000015400490000002004600039000005fb06000041000000000714004b00000000070000190000000007062019000005fb01100197000005fb08400197000000000918004b0000000006008019000000000118013f000005fb0110009c00000000010700190000000001066019000000000101004b0000010d0000c13d0000000001000414000005ff0610009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f0000000004010433000005ff0540009c000001740000413d00000606020000410000000000230435000000a40210003900000605040000410000000000420435000000840210003900000008040000390000000000420435000000640110003900000020020000390000000000210435000005f301000041000005f30230009c0000000001034019000000400110021000000607011001c7000017c800010430000000c0022002100000062202200197000000400110021000000623011000410000062401100197000000000112019f00000060024002100000062502200197000000000121019f00000626011001c70000800302000039000000000300001900000000040000190000000005000019000000000600001917c617b20000040f00030000000103550000006001100270000105f30010019d000005f3041001970000003f014000390000062705100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000005fc0630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001022001900000025b0000613d0000000901000029000000000101004b0000125b0000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b0000028f0000c13d0000000702000029000000000121034f000000000101043b000000800210008c000002c40000413d00000080021002700000062d0310009c000000000201a0190000062d0310009c0000000003000019000000100300203900000008043001bf000005fc0520009c00000000030420190000004004200270000005fc0520009c000000000204201900000004043001bf000005f30520009c00000000030420190000002004200270000005f30520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b000002db0000613d00000000040304330000062c04400197000000f805200210000000000445019f0000062e0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000902000029000000210220003900000000001204350000041b0000013d000000000441034f000000000404043b0000060004400197000006080740009c000002650000c13d000000430460008c000002710000213d0000060601000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000061b01000041000000c40010043f0000061c01000041000000e40010043f0000061d01000041000017c800010430000080060620008c00000000060000190000024a0000c13d000000040650008c00000000060000190000024a0000413d00000001060000390000000207400367000000000707043b0000060007700197000006010870009c000002490000613d000006020870009c000002490000613d000006030870009c000002490000613d000006040670009c00000000060000190000000106006039000000010660018f17c616e10000040f17c617260000040f0000000002010019000000400100043d000b00000001001d17c615c80000040f0000000b040000290000000001410049000005f302000041000005f30310009c0000000001028019000005f30340009c000000000204401900000040022002100000006001100210000000000121019f000017c70001042e0000000001010433000005f302000041000005f30410009c0000000001028019000005f30430009c000000000203401900000040022002100000006001100210000000000121019f000017c800010430000006090140009c000000430000613d0000060601000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000060a01000041000000c40010043f0000060b01000041000017c8000104300000002404500039000000000441034f000000000404043b000b00000004001d000005fd0440009c0000010d0000213d000000e402200039000000000221034f0000004404500039000000000141034f000000000101043b000a00000001001d000000000102043b0000060c02000041000000800020043f000005fd02300197000800000002001d000000840020043f000005fd01100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c0000033d0000c13d0000000103000031000000200130008c00000020040000390000000004034019000003690000013d000000710320008c000002e10000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d0000000004420019000005fb05000041000000000643004b00000000060000190000000006058019000005fb04400197000005fb07300197000000000847004b0000000005008019000000000447013f000005fb0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004430019000000000141034f000000000301043b000005fc0130009c0000010d0000213d00000000013200490000002004400039000005fb02000041000000000514004b00000000050000190000000005022019000005fb01100197000005fb06400197000000000716004b0000000002008019000000000116013f000005fb0110009c00000000010500190000000001026019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000005df0000c13d0000000003000031000007880000013d000000400200043d000900000002001d0000062b0220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000002d00000413d00000009030000290000000003030433000000000303004b000004120000c13d000006360100004100000000001004350000003201000039000000040010043f0000063701000041000017c800010430000000020120008c000003900000c13d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d000000000201043b000000800120008c0000054d0000413d00000080012002700000062d0320009c000000000102a0190000062d0320009c0000000003000019000000100300203900000008043001bf000005fc0510009c00000000030420190000004004100270000005fc0510009c000000000104201900000004043001bf000005f30510009c00000000030420190000002004100270000005f30510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000032a0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003220000413d000000000500004b0000032c0000613d0000000005010433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000056a0000013d000005f302000041000005f30310009c0000000001028019000000c0011002100000060d011001c70000000b0200002917c617b70000040f00000000030100190000006003300270000005f303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003560000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000034e0000413d000000000705004b000003650000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000003ec0000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000060e030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000060f05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c000004ec0000c13d00000001020000390000000101000031000004fd0000013d000000010120008c0000046c0000c13d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005ef0000413d00000080012002700000062d0320009c000000000102a0190000062d0320009c0000000003000019000000100300203900000008043001bf000005fc0510009c00000000030420190000004004100270000005fc0510009c000000000104201900000004043001bf000005f30510009c00000000030420190000002004100270000005f30510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003d90000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003d10000413d000000000500004b000003db0000613d0000000005010433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000060c0000013d000000400200043d0000001f0430018f0000000503300272000003f90000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003f10000413d000000000504004b000004080000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f3010000410000000103000031000005f30430009c0000000003018019000005f30420009c000000000102401900000040011002100000006002300210000000000112019f000017c800010430000000f803100210000005fb04000041000000000101004b0000000001030019000000000104601900000000030204330000062c03300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c0000047e0000413d00000080012002700000062d0320009c000000000102a0190000062d0320009c0000000003000019000000100300203900000008043001bf000005fc0510009c00000000030420190000004004100270000005fc0510009c000000000104201900000004043001bf000005f30510009c00000000030420190000002004100270000005f30510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004590000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004510000413d000000000500004b0000045b0000613d0000000005010433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000049b0000013d000000400100043d00000044021000390000062803000041000000000032043500000024021000390000001703000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000000400100043d0000062b0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004880000413d0000000004010433000000000404004b000002db0000613d000000f804200210000005fb05000041000000000202004b0000000002040019000000000205601900000000040304330000062c04400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c0000065c0000413d00000080023002700000062d0430009c000000000203a0190000062d0430009c0000000004000019000000100400203900000008054001bf000005fc0620009c00000000040520190000004005200270000005fc0620009c000000000205201900000004054001bf000005f30620009c00000000040520190000002005200270000005f30620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fc0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000004d90000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000004d10000413d000000000600004b000004db0000613d0000000006020433000000000606004b000002db0000613d00000000060504330000062c06600197000000f807400210000000000667019f0000062e0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006790000013d000005f304000041000005f30530009c000000000304801900000060033002100000004002200210000000000223019f000005f30310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c617b20000040f000000010220018f00030000000103550000006001100270000105f30010019d000005f3011001970000006003000039000700000003001d000000000301004b0000051d0000c13d00000007010000290000000031010434000300000003001d000000000202004b000005ba0000c13d000000000201004b0000070d0000c13d000000400300043d000b00000003001d000006060100004100000000001304350000000401300039000000060200002900000000002104350000002402300039000000050100002917c615b50000040f0000000b040000290000000001410049000005f302000041000005f30310009c0000000001028019000005f30340009c000000000204401900000040022002100000006001100210000000000121019f000017c800010430000005fc0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f00000005055002720000053d0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005350000413d000000000604004b000005010000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000005010000013d000000400100043d0000062b0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005570000413d0000000004010433000000000404004b000002db0000613d000000f804200210000005fb05000041000000000202004b0000000002040019000000000205601900000000040304330000062c04400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000007180000413d00000080023002700000062d0430009c000000000203a0190000062d0430009c0000000004000019000000100400203900000008054001bf000005fc0620009c00000000040520190000004005200270000005fc0620009c000000000205201900000004054001bf000005f30620009c00000000040520190000002005200270000005f30620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fc0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005a70000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000059f0000413d000000000600004b000005a90000613d0000000006020433000000000606004b000002db0000613d00000000060504330000062c06600197000000f807400210000000000667019f0000062e0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000007350000013d000000000201004b00000a0d0000c13d000006100100004100000000001004390000000b010000290000000400100443000005f3010000410000000002000414000005f30320009c0000000001024019000000c00110021000000611011001c7000080020200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000000000101004b00000a090000c13d000000400100043d00000044021000390000061a03000041000000000032043500000024021000390000001d03000039000000000032043500000606020000410000000000210435000000040210003900000006030000290000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000005f3054001970000000004430019000000000334004b000000000300001900000001030040390000000103300190000005e90000c13d0000000003000031000000000643004b000007860000813d000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c800010430000000400100043d0000062b0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005f90000413d0000000004010433000000000404004b000002db0000613d000000f804200210000005fb05000041000000000202004b0000000002040019000000000205601900000000040304330000062c04400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c0000099b0000413d00000080032002700000062d0420009c000000000302a0190000062d0420009c0000000004000019000000100400203900000008054001bf000005fc0630009c00000000040520190000004005300270000005fc0630009c000000000305201900000004054001bf000005f30630009c00000000040520190000002005300270000005f30630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000005fc0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006490000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000006410000413d000000000600004b0000064b0000613d0000000006030433000000000606004b000002db0000613d00000000060504330000062c06600197000000f807400210000000000667019f0000062e0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000009b80000013d000000400200043d0000062b0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006660000413d0000000005020433000000000505004b000002db0000613d000000f805300210000005fb06000041000000000303004b0000000003050019000000000306601900000000050404330000062c05500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006870000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b000006800000413d000000000143001900000000000104350000000004020433000000000504004b000006940000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b0000068d0000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000005fc0220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f0000062b0110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000062f0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000b8d0000413d00000080021002700000062d0310009c000000000201a0190000062d0310009c0000000003000019000000100300203900000008043001bf000005fc0520009c00000000030420190000004004200270000005fc0520009c000000000204201900000004043001bf000005f30520009c00000000030420190000002004200270000005f30520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000006f80000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000006f00000413d000000000400004b000006fa0000613d00000005040000290000000004040433000000000404004b000002db0000613d00000000040304330000062c04400197000000f805200210000000000445019f0000062e0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000bad0000013d000005f3020000410000000304000029000005f30340009c00000000030200190000000003044019000005f30410009c000000000102801900000060011002100000004002300210000000000121019f000017c800010430000000400200043d0000062b0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007220000413d0000000005020433000000000505004b000002db0000613d000000f805300210000005fb06000041000000000303004b0000000003050019000000000306601900000000050404330000062c05500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a4a0000413d00000080043002700000062d0530009c000000000403a0190000062d0530009c0000000005000019000000100500203900000008065001bf000005fc0740009c00000000050620190000004006400270000005fc0740009c000000000406201900000004065001bf000005f30740009c00000000050620190000002006400270000005f30740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fc0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007730000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b0000076b0000413d000000000700004b000007750000613d0000000007040433000000000707004b000002db0000613d00000000070604330000062c07700197000000f808500210000000000778019f0000062e0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000a670000013d000000000252034f0000000003430049000005ff0410009c0000079c0000413d000000400100043d00000044021000390000060503000041000000000032043500000024021000390000000803000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000005f30330019700000000023203df000000c001100210000006220110019700000634011001c700000000011203af000080100200003917c617c10000040f00000000030100190000006003300270000105f30030019d000005f30330019700030000000103550000000102200190000009800000613d0000003f013000390000062701100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fc0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000007c60000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007be0000413d000000000400004b000007c80000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000007d80000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000007d00000413d000000000604004b000007e70000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c220000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b000005fb06000041000000000753004b00000000070000190000000007068019000005fb05500197000005fb08300197000000000958004b0000000006008019000000000558013f000005fb0550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000005fc0350009c0000010d0000213d000000050350021000000000043400490000002006100039000005fb01000041000000000746004b00000000070000190000000007012019000005fb04400197000005fb08600197000000000948004b0000000001008019000000000448013f000005fb0440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d00000020041000390000063505500198000008260000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b0000081e0000413d000000000200004b000008280000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000005fc0520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f000005f302000041000005f30340009c0000000003020019000000000304401900000040033002100000000001010433000005f30410009c00000000010280190000006001100210000000000131019f0000000003000414000005f30430009c0000000002034019000000c002200210000000000112019f00000633011001c7000080100200003917c617b70000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b000005fb06000041000000000754004b00000000070000190000000007068019000005fb05500197000005fb08400197000000000958004b0000000006008019000000000558013f000005fb0550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000001140019000000000313034f000000000303043b000005fc0430009c0000010d0000213d00000000023200490000002004100039000005fb01000041000000000524004b00000000050000190000000005012019000005fb02200197000005fb06400197000000000726004b0000000001008019000000000226013f000005fb0220009c000000000105c019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000011590000c13d0000000003000031000005f30410009c0000078a0000213d000005f30330019700000000023203df000000c001100210000006220110019700000634011001c700000000011203af000080100200003917c617c10000040f00000000030100190000006003300270000105f30030019d000005f30330019700030000000103550000000102200190000012ab0000613d0000003f013000390000062701100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fc0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000008a70000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000089f0000413d000000000400004b000008a90000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008b90000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008b10000413d000000000604004b000008c80000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c220000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000639030000410000000000320435000001c00300003900000000003104350000063a0310009c0000012b0000213d000001e003100039000000400030043f000005f303000041000005f30420009c000000000203801900000040022002100000000001010433000005f30410009c00000000010380190000006001100210000000000121019f0000000002000414000005f30420009c0000000002038019000000c002200210000000000112019f00000633011001c7000080100200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b0000063b0300004100000000003204350000008003400039000000000013043500000060014000390000063c03000041000000000031043500000040014000390000063d030000410000000000310435000000800100003900000000001404350000063e0140009c0000012b0000213d0000000904000029000000a001400039000000400010043f000005f301000041000005f30320009c000000000201801900000040022002100000000003040433000005f30430009c00000000030180190000006003300210000000000223019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001022001900000010d0000613d000000000301043b000000400100043d00000042021000390000000704000029000000000042043500000020021000390000063f0400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006160310009c0000012b0000213d0000008003100039000000400030043f000005f303000041000005f30420009c000000000203801900000040022002100000000001010433000005f30410009c00000000010380190000006001100210000000000121019f0000000002000414000005f30420009c0000000002038019000000c002200210000000000112019f00000633011001c7000080100200003917c617b70000040f00000001012001900000125b0000c13d0000010d0000013d0000001f0430018f00000005023002720000098b0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000009840000413d000000000504004b000009990000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c800010430000000400300043d0000062b0430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000009a50000413d0000000005030433000000000505004b000002db0000613d000000f805200210000005fb06000041000000000202004b0000000002050019000000000206601900000000050404330000062c05500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b1f0000413d00000080042002700000062d0520009c000000000402a0190000062d0520009c0000000005000019000000100500203900000008065001bf000005fc0740009c00000000050620190000004006400270000005fc0740009c000000000406201900000004065001bf000005f30740009c00000000050620190000002006400270000005f30740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fc0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000009f60000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000009ee0000413d000000000700004b000009f80000613d0000000007040433000000000707004b000002db0000613d00000000070604330000062c07700197000000f808500210000000000778019f0000062e0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b3c0000013d00000007010000290000000001010433000000000201004b00000a370000613d000005fb02000041000000200310008c00000000030000190000000003024019000005fb01100197000000000401004b000000000200a019000005fb0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a370000c13d000000400100043d00000064021000390000061803000041000000000032043500000044021000390000061903000041000000000032043500000024021000390000002a03000039000000000032043500000606020000410000000000210435000000040210003900000006030000290000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000000400300043d0000002401300039000000090200002900000000002104350000060c010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000ab80000c13d0000000103000031000000200130008c0000002004000039000000000403401900000aeb0000013d000000400400043d0000062b0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000a540000413d0000000006040433000000000606004b000002db0000613d000000f806300210000005fb07000041000000000303004b0000000003060019000000000307601900000000060504330000062c06600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c340000413d00000080053002700000062d0630009c000000000503a0190000062d0630009c0000000006000019000000100600203900000008076001bf000005fc0850009c00000000060720190000004007500270000005fc0850009c000000000507201900000004076001bf000005f30850009c00000000060720190000002007500270000005f30850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fc0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000aa50000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000a9d0000413d000000000800004b00000aa70000613d0000000008050433000000000808004b000002db0000613d00000000080704330000062c08800197000000f809600210000000000889019f0000062e0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000c510000013d000005f302000041000005f30310009c00000000010280190000000704000029000005f30340009c00000000020440190000004002200210000000c001100210000000000121019f00000612011001c70000000b0200002917c617b70000040f000000070a00002900000000030100190000006003300270000005f303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000ad70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000acf0000413d000000000705004b00000ae70000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000bfc0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000005fc0410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000ca20000c13d00000044021000390000000a03000029000000000032043500000020021000390000060e03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006160310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006170310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000060f040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000db20000c13d0000000102000039000000010100003100000dc50000013d000000400400043d0000062b0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b290000413d0000000006040433000000000606004b000002db0000613d000000f806200210000005fb07000041000000000202004b0000000002060019000000000207601900000000060504330000062c06600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000cb60000413d00000080052002700000062d0620009c000000000502a0190000062d0620009c0000000006000019000000100600203900000008076001bf000005fc0850009c00000000060720190000004007500270000005fc0850009c000000000507201900000004076001bf000005f30850009c00000000060720190000002007500270000005f30850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fc0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000b7a0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000b720000413d000000000800004b00000b7c0000613d0000000008050433000000000808004b000002db0000613d00000000080704330000062c08800197000000f809600210000000000889019f0000062e0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000cd30000013d000000400200043d000500000002001d0000062b0220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000b990000413d00000005030000290000000003030433000000000303004b000002db0000613d000000f803100210000005fb04000041000000000101004b0000000001030019000000000104601900000000030204330000062c03300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d0000000004430019000005fb05000041000000000641004b00000000060000190000000006058019000005fb04400197000005fb07100197000000000847004b0000000005008019000000000447013f000005fb0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000005fc0510009c0000010d0000213d00000000051300490000002003400039000005fb04000041000000000653004b00000000060000190000000006042019000005fb05500197000005fb07300197000000000857004b0000000004008019000000000557013f000005fb0550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000ee40000c13d000000000132034f000000000101043b000000010200008a000005fb03000041000000000221004b00000000020000190000000002032019000005fb01100197000005fb0410009c0000000003008019000005fb01100167000005fb0110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010420000c13d000000400100043d000400000001001d0000062b0110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000062e02000041000000000021043500000001010000390000000000130435000010420000013d000000400200043d0000001f0430018f000000050330027200000c090000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c010000413d000000000504004b00000c180000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f3010000410000000103000031000005f30430009c0000000003018019000005f30420009c000000000102401900000040011002100000006002300210000000000112019f000017c800010430000000400100043d00000044021000390000063803000041000000000032043500000024021000390000001f03000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000000400500043d0000062b0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c3e0000413d0000000007050433000000000707004b000002db0000613d000000f807300210000005fb08000041000000000303004b0000000003070019000000000308601900000000070604330000062c07700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d340000413d00000080063002700000062d0730009c000000000603a0190000062d0730009c0000000007000019000000100700203900000008087001bf000005fc0960009c00000000070820190000004008600270000005fc0960009c000000000608201900000004087001bf000005f30960009c00000000070820190000002008600270000005f30960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000005fc0a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000c8f0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000c870000413d000000000900004b00000c910000613d0000000009060433000000000909004b000002db0000613d00000000090804330000062c09900197000000f80a70021000000000099a019f0000062e0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000d510000013d00000064021000390000061303000041000000000032043500000044021000390000061403000041000000000032043500000024021000390000003603000039000000000032043500000606020000410000000000210435000000040210003900000006030000290000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000000400500043d0000062b0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000cc00000413d0000000007050433000000000707004b000002db0000613d000000f807200210000005fb08000041000000000202004b0000000002070019000000000208601900000000070604330000062c07700197000000000227019f0000000000260435000000400600043d0000062b0260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000062f0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e150000413d00000080072002700000062d0820009c000000000702a0190000062d0820009c0000000008000019000000100800203900000008098001bf000005fc0a70009c00000000080920190000004009700270000005fc0a70009c000000000709201900000004098001bf000005f30a70009c00000000080920190000002009700270000005f30a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000005fc0b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d210000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d190000413d000000000a00004b00000d230000613d000000000a070433000000000a0a004b000002db0000613d000000000a0904330000062c0aa00197000000f80b800210000000000aab019f0000062e0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e320000013d000000400600043d0000062b0760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d3e0000413d0000000008060433000000000808004b000002db0000613d000000f808300210000005fb09000041000000000303004b0000000003080019000000000309601900000000080704330000062c08800197000000000338019f0000000000370435000000400700043d0000062b0370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000062f090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f470000413d00000080083002700000062d0930009c000000000803a0190000062d0930009c00000000090000190000001009002039000000080a9001bf000005fc0b80009c00000000090a2019000000400a800270000005fc0b80009c00000000080a2019000000040a9001bf000005f30b80009c00000000090a2019000000200a800270000005f30b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000005fc0ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000d9f0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000d970000413d000000000b00004b00000da10000613d000000000b080433000000000b0b004b000002db0000613d000000000b0a04330000062c0bb00197000000f80c900210000000000bbc019f0000062e0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000f640000013d000005f304000041000005f30520009c00000000020480190000004002200210000005f30530009c00000000030480190000006003300210000000000223019f000005f30310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c617b20000040f000000010220018f00030000000103550000006001100270000105f30010019d000005f3011001970000006003000039000900000003001d000000000301004b00000de50000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f1a0000c13d000000000201004b000011110000c13d000000400300043d000b00000003001d0000060601000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a0100002917c615b50000040f0000000b040000290000000001410049000005f302000041000005f30310009c0000000001028019000005f30340009c000000000204401900000040022002100000006001100210000000000121019f000017c800010430000005fc0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e050000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000dfd0000413d000000000604004b00000dc90000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000dc90000013d000000400700043d0000062b0870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e1f0000413d0000000009070433000000000909004b000002db0000613d000000f809200210000005fb0a000041000000000202004b000000000209001900000000020a601900000000090804330000062c09900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e3f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e380000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000e4e0000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e470000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000e5d0000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000e560000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000e6c0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000e650000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000e7b0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000e740000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000e8a0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000e830000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000005fc0450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000005fb0a000041000000000b96004b000000000b000019000000000b0a8019000005fb09900197000005fb0c600197000000000d9c004b000000000a00801900000000099c013f000005fb0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fc0a60009c0000010d0000213d000000000a6800490000002008900039000005fb09000041000000000ba8004b000000000b000019000000000b092019000005fb0aa00197000005fb0c800197000000000dac004b0000000009008019000000000aac013f000005fb0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012790000c13d000000000687034f000000000606043b000000010700008a000005fb08000041000000000776004b00000000070000190000000007082019000005fb06600197000005fb0960009c0000000008008019000005fb06600167000005fb0660009c00000000070860190000006006000039000000000707004b000013120000c13d0000062b0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062e070000410000000000760435000000010600003900000000006504350000000006050019000013120000013d000000380210008c000010250000413d0000002002100270000005f30310009c00000000030100190000000003022019000005f30210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d0000062b0440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f020000413d00000004040000290000000004040433000000000404004b000002db0000613d00000000040304330000062c04400197000000f805200210000000000445019f00000630044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010420000013d000000000201004b00000f310000c13d000006100100004100000000001004390000000b010000290000000400100443000005f3010000410000000002000414000005f30320009c0000000001024019000000c00110021000000611011001c7000080020200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000000000101004b000005cd0000613d00000009010000290000000001010433000000000201004b000000430000613d000005fb02000041000000200310008c00000000030000190000000003024019000005fb01100197000000000401004b000000000200a019000005fb0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a220000613d000000430000013d000000400800043d0000062b0980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000f510000413d000000000a080433000000000a0a004b000002db0000613d000000f80a300210000005fb0b000041000000000303004b00000000030a001900000000030b6019000000000a0904330000062c0aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000f710000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000f6a0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000f800000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000f790000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000f8f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000f880000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000f9e0000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000f970000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b00000fad0000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000fa60000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b00000fbc0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b00000fb50000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b00000fcb0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b00000fc40000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000005fc0450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000005fb0a000041000000000b96004b000000000b000019000000000b0a8019000005fb09900197000005fb0c600197000000000d9c004b000000000a00801900000000099c013f000005fb0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fc0a60009c0000010d0000213d000000000a6800490000002008900039000005fb09000041000000000ba8004b000000000b000019000000000b092019000005fb0aa00197000005fb0c800197000000000dac004b0000000009008019000000000aac013f000005fb0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012c60000c13d000000000687034f000000000606043b000000010700008a000005fb08000041000000000776004b00000000070000190000000007082019000005fb06600197000005fb0960009c0000000008008019000005fb06600167000005fb0660009c00000000070860190000006006000039000000000707004b000013a50000c13d0000062b0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062e070000410000000000760435000000010600003900000000006504350000000006050019000013a50000013d000000400200043d000400000002001d0000062b0220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010310000413d00000004030000290000000003030433000000000303004b000002db0000613d000000f80110021000000000030204330000062c03300197000000000113019f000005fb01100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b000010b70000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b000005fb04000041000000000659004b00000000060000190000000006048019000005fb05500197000005fb07900197000000000857004b0000000004008019000000000557013f000005fb0550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000005fc0a20009c0000010d0000213d00000000032300490000002009900039000005fb0a000041000000000b39004b000000000b000019000000000b0a2019000005fb03300197000005fb09900197000000000c39004b000000000a008019000000000339013f000005fb0330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d0000000003450019000000000363001900000000037300190000000003830019000000000223001900000000030104330000000002320019000005fc02200197000000380320008c000011620000413d0000002003200270000005f30420009c00000000040200190000000004032019000005f30320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d0000062b0560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010a10000413d0000000005060433000000000505004b000002db0000613d00000000050404330000062c05500197000000f807300210000000000557019f00000632055001c700000000005404350000000303300210000000f80330008900000000023201cf000000210360003900000000002304350000117c0000013d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000111c0000413d00000080021002700000062d0310009c000000000201a0190000062d0310009c0000000003000019000000100300203900000008043001bf000005fc0520009c00000000030420190000004004200270000005fc0520009c000000000204201900000004043001bf000005f30520009c00000000030420190000002004200270000005f30520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000442043600000021053000390000000505500272000010fe0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000010f60000413d000000000500004b000011000000613d0000000005020433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c000000000100201900000021032000390000000000130435000011390000013d000005f3020000410000000804000029000005f30340009c00000000030200190000000003044019000005f30410009c000000000102801900000060011002100000004002300210000000000121019f000017c800010430000000400200043d0000062b0320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011260000413d0000000004020433000000000404004b000002db0000613d000000f804100210000005fb05000041000000000101004b0000000001040019000000000105601900000000040304330000062c04400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011460000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b0000113f0000413d0000000002430019000006400400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000005fc0420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000104a0000013d000000000343001a000005f304400197000005e90000413d0000000005000031000000000635004b000005e90000413d000000000242034f00000000033500490000087b0000013d000000400600043d0000062b0360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a0000116c0000413d0000000004060433000000000404004b000002db0000613d000000f80220021000000000040304330000062c04400197000000000242019f0000063102200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b000005fb07000041000000000854004b00000000080000190000000008078019000005fb05500197000005fb09400197000000000a59004b0000000007008019000000000559013f000005fb0550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000005fc0340009c0000010d0000213d00000000024200490000002005500039000005fb03000041000000000725004b00000000070000190000000007032019000005fb02200197000005fb08500197000000000928004b0000000003008019000000000228013f000005fb0220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000011b40000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000011ad0000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000011c50000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011bd0000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b000011d60000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011ce0000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b000011e70000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011df0000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b000011f80000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011f00000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b000012090000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012010000413d0000000008870019000000000008043500000000066700190000001f0740018f0000002008600039000000020550036700000005094002720000121a0000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012120000413d000000000a07004b000012290000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b000012370000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012300000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000005fc0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f000005f301000041000005f30430009c000000000301801900000040033002100000000002020433000005f30420009c00000000020180190000006002200210000000000232019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001012001900000010d0000613d0000000a0100002917c617900000040f0000064102000041000000000020043900000008020000290000000400200443000900000001001d0000800a01000039000000240200003917c615a40000040f0000000902000029000000000112004b0000000001000019000000010100a03917c616590000040f0000000b01000029000001e4021000390000000a0100002917c616710000040f000000000300003117c6169d0000040f0000064201000041000000400200043d0000000000120435000005f301000041000005f30320009c0000000001024019000000400110021000000643011001c7000017c70001042e000000380760008c000012f80000413d0000002007600270000005f30860009c00000000080600190000000008072019000005f30760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062b0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012940000413d0000000009050433000000000909004b000002db0000613d00000000090804330000062c09900197000000f80a70021000000000099a019f00000630099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000013120000013d0000001f0430018f0000000502300272000012b60000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000012af0000413d000000000504004b000012c40000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c800010430000000380760008c0000138b0000413d0000002007600270000005f30860009c00000000080600190000000008072019000005f30760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062b0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012e10000413d0000000009050433000000000909004b000002db0000613d00000000090804330000062c09900197000000f80a70021000000000099a019f00000630099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000013a50000013d0000062b0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013010000413d0000000008050433000000000808004b000002db0000613d000000f80660021000000000080704330000062c08800197000000000668019f000005fb0660016700000000006704350000000006050019000000400500043d0000062b0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000131c0000413d0000000009050433000000000909004b000002db0000613d00000000090704330000062c0990019700000631099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000005fb0a000041000000000d9c004b000000000d000019000000000d0a8019000005fb09900197000005fb0ec00197000000000f9e004b000000000a00801900000000099e013f000005fb0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fc0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fb0d000041000000000e7c004b000000000e000019000000000e0d2019000005fb07700197000005fb0cc00197000000000f7c004b000000000d00801900000000077c013f000005fb0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fc09700197000000380790008c0000141e0000413d0000002007900270000005f30890009c000000000709a019000005f30890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062b0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013750000413d000000000b070433000000000b0b004b000002db0000613d000000000b0a04330000062c0bb00197000000f80c800210000000000bbc019f000006320bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014370000013d0000062b0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013940000413d0000000008050433000000000808004b000002db0000613d000000f80660021000000000080704330000062c08800197000000000668019f000005fb0660016700000000006704350000000006050019000000400500043d0000062b0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000013af0000413d0000000009050433000000000909004b000002db0000613d00000000090704330000062c0990019700000631099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000005fb0a000041000000000d9c004b000000000d000019000000000d0a8019000005fb09900197000005fb0ec00197000000000f9e004b000000000a00801900000000099e013f000005fb0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fc0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fb0d000041000000000e7c004b000000000e000019000000000e0d2019000005fb07700197000005fb0cc00197000000000f7c004b000000000d00801900000000077c013f000005fb0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fc09700197000000380790008c000014e10000413d0000002007900270000005f30890009c000000000709a019000005f30890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062b0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000014080000413d000000000b070433000000000b0b004b000002db0000613d000000000b0a04330000062c0bb00197000000f80c800210000000000bbc019f000006320bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014fa0000013d000000400700043d0000062b0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014270000413d000000000a070433000000000a0a004b000002db0000613d000000f809900210000000000a0804330000062c0aa001970000000009a9019f00000631099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000005fb0a000041000000000b83004b000000000b000019000000000b0a8019000005fb08800197000005fb0c300197000000000d8c004b000000000a00801900000000088c013f000005fb0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000005fc0480009c0000010d0000213d00000000048900490000002009300039000005fb03000041000000000a49004b000000000a000019000000000a032019000005fb04400197000005fb0b900197000000000c4b004b000000000300801900000000044b013f000005fb0440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006260a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b0000146f0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000014680000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b0000147e0000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b000014770000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b0000148d0000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000014860000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a8002720000149e0000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000014960000413d000000000b06004b000014ad0000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000014bb0000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000014b40000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000005fc0510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000005f301000041000005f30240009c0000000002010019000000000204401900000040022002100000000003030433000005f30430009c00000000030180190000006003300210000000000223019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001012001900000125b0000c13d0000010d0000013d000000400700043d0000062b0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014ea0000413d000000000a070433000000000a0a004b000002db0000613d000000f809900210000000000a0804330000062c0aa001970000000009a9019f00000631099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000005fb0a000041000000000b82004b000000000b000019000000000b0a8019000005fb08800197000005fb0c200197000000000d8c004b000000000a00801900000000088c013f000005fb0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000005fc0480009c0000010d0000213d00000000048900490000002009200039000005fb02000041000000000a49004b000000000a000019000000000a022019000005fb04400197000005fb0b900197000000000c4b004b000000000200801900000000044b013f000005fb0440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d0000002004200039000006330a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b000015320000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b0000152b0000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b000015410000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b0000153a0000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000015500000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000015490000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000015610000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000015590000413d000000000b06004b000015700000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b0000157e0000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000015770000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000005fc0510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f000005f301000041000005f30340009c0000000003010019000000000304401900000040033002100000000002020433000005f30420009c00000000020180190000006002200210000000000232019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001012001900000125b0000c13d0000010d0000013d0000000003010019000005f3010000410000000004000414000005f30540009c0000000001044019000000c001100210000000600220021000000000011200190000064401100041000000000203001917c617b70000040f0000000102200190000015b30000613d000000000101043b000000000001042d0000000001000019000017c80001043000000000030104330000000002320436000000000403004b000015c10000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000015ba0000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000015d70000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000015d00000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a0000000003100031000005fb010000410000005f0230008c00000000020000190000000002012019000005fb04300197000000000504004b0000000001008019000005fb0440009c000000000102c019000000000101004b000016240000613d00000002010003670000004402100370000000000202043b000005fc0420009c000016240000213d0000000003230049000005fb04000041000002600530008c00000000050000190000000005044019000005fb03300197000000000603004b000000000400a019000005fb0330009c00000000030500190000000003046019000000000303004b000016240000c13d0000000003000411000080010330008c000016220000c13d0000000003000412000005fd033001970000000004000410000000000343004b000016220000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b000016260000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d000005f302000041000005f30310009c0000000001028019000000c001100210000080010200003917c617b20000040f000000010300002900030000000103550000006001100270000105f30010019d000000200130011a000000010120019500000001012001900000163e0000613d0000000001000019000017c70001042e0000000001000019000017c80001043000000000431200a900000000422300d9000000000112004b000016530000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b000016130000613d000005f302000041000005f30410009c0000000001028019000000c00110021000000633011001c700008009020000390000800104000039000000000500001917c617b20000040f0000000003000415000000020330008a00000020033000c90000161b0000013d000000400100043d00000064021000390000064503000041000000000032043500000044021000390000064603000041000000000032043500000024021000390000002503000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c800010430000000000101004b0000165c0000613d000000000001042d000000400100043d00000064021000390000064703000041000000000032043500000044021000390000064803000041000000000032043500000024021000390000002203000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000000000300003100000000041300490000001f0540008a0000000204000367000000000224034f000000000202043b000005fb06000041000000000752004b00000000070000190000000007064019000005fb05500197000005fb08200197000000000958004b000000000600a019000000000558013f000005fb0550009c00000000050700190000000005066019000000000505004b0000169b0000613d0000000001120019000000000214034f000000000202043b000005fc0420009c0000169b0000213d00000000032300490000002001100039000005fb04000041000000000531004b00000000050000190000000005042019000005fb03300197000005fb06100197000000000736004b0000000004008019000000000336013f000005fb0330009c00000000030500190000000003046019000000000303004b0000169b0000c13d000000000001042d0000000001000019000017c800010430000006490420009c000016cf0000813d0000003f04200039000000200500008a000000000554016f000000400400043d0000000005540019000000000645004b00000000060000190000000106004039000005fc0750009c000016cf0000213d0000000106600190000016cf0000c13d000000400050043f00000000042404360000000005120019000000000335004b000016d50000213d0000001f0320018f00000002011003670000000505200272000016bd0000613d000000000600001900000005076002100000000008740019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000016b50000413d000000000603004b000016cc0000613d0000000505500210000000000151034f00000000055400190000000303300210000000000605043300000000063601cf000000000636022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000000012400190000000000010435000000000001042d000006360100004100000000001004350000004101000039000000040010043f0000063701000041000017c8000104300000000001000019000017c8000104300000000001000411000080010110008c000016db0000613d000000000001042d000006360100004100000000001004350000000101000039000000040010043f0000063701000041000017c80001043000000000070200190000000202000367000000000803004b000016f40000613d000000000805004b000016ff0000613d000005f3084001970000000004450019000000000554004b000000000500001900000001050040390000000105500190000017200000c13d0000000005000031000000000945004b000017200000413d000000000282034f0000000004450049000017000000013d000000000305004b0000170e0000613d000000000345001a000005f304400197000017200000413d0000000005000031000000000835004b000017200000413d000000000242034f00000000033500490000170f0000013d0000000004000031000005f30440019700000000024203df000000c00110021000000622011001970000064a011001c700000000011203af000000000206004b0000000005000019000000010500c03900008009020000390000000004070019000000000600001917c617bc0000040f0000171b0000013d00000000030000310000064a040000410000063405000041000000000606004b0000000004056019000000c0011002100000062201100197000000000114019f000005f30330019700000000023203df00000000011203af000000000207001917c617bc0000040f00030000000103550000006001100270000105f30010019d000000010120018f000000000001042d000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c8000104300000000102000031000000000101004b0000176f0000613d000006490120009c000017690000813d0000003f01200039000000200300008a000000000331016f000000400100043d0000000003310019000000000413004b00000000040000190000000104004039000005fc0530009c000017690000213d0000000104400190000017690000c13d000000400030043f00000000032104360000001f042000390000000504400272000017470000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000173f0000413d000000000400004b000017490000613d0000000104000031000000000442004b0000178e0000213d00000003050003670000001f0420018f0000000502200272000017590000613d000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000726004b000017510000413d000000000604004b000017680000613d0000000502200210000000000525034f00000000022300190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d000006360100004100000000001004350000004101000039000000040010043f0000063701000041000017c80001043000000003010003670000001f0420018f00000005032002720000177b0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000635004b000017740000413d000000000504004b000017890000613d00000003044002100000000503300210000000000503043300000000054501cf000000000545022f000000000131034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f301000041000005f30320009c00000000010240190000006001100210000017c8000104300000000001000019000017c800010430000000e0031000390000000202000367000000000332034f000000000303043b000005fd033001980000179a0000613d0000012001100039000000000112034f000000000101043b000017ab0000013d000000a003100039000000000332034f0000006004100039000000000442034f000000000404043b000000000503043b00000000634500a9000000000605004b000017a60000613d00000000655300d9000000000445004b000017ac0000c13d0000012001100039000000000112034f000000000101043b000000000131001a000017ac0000413d000000000001042d000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c800010430000017b5002104210000000102000039000000000001042d0000000002000019000000000001042d000017ba002104230000000102000039000000000001042d0000000002000019000000000001042d000017bf002104210000000102000039000000000001042d0000000002000019000000000001042d000017c4002104230000000102000039000000000001042d0000000002000019000000000001042d000017c600000432000017c70001042e000017c80001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f190100000000000000000000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39202bcce700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000002000000000000000000000000000000000000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f706575650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c00000000000000000000000000000000000000000000000100000000000000000100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026e2b1ced15a158459055c41a56ae7666187938e1aa1b1ae3dd781c24f40eec3", - "deployedBytecode": "0x0004000000000002000b00000000000200000000030100190000006003300270000005f30430019700030000004103550002000000010355000005f30030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000004000031000000040140008c000000410000413d0000000201000367000000000201043b000000e002200270000005f50320009c000000450000a13d000005f60320009c000000a90000613d000005f70320009c000000ea0000613d000005f80220009c000000a60000c13d000000040240008a000005fb03000041000000200420008c00000000040000190000000004034019000005fb05200197000000000605004b000000000300a019000005fb0550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000005fc0310009c0000010d0000213d0000000001120049000005fb02000041000002600310008c00000000030000190000000003024019000005fb01100197000000000401004b000000000200a019000005fb0110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d000000200100003900000100001004430000012000000443000005f401000041000017c70001042e000000000104004b000000a60000c13d0000000001000019000017c70001042e000005f90320009c000000eb0000613d000005fa0220009c000000a60000c13d000000040240008a000005fb03000041000000600520008c00000000050000190000000005034019000005fb02200197000000000602004b000000000300a019000005fb0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000005fc0320009c0000010d0000213d00000004052000390000000003540049000005fb06000041000002600730008c00000000070000190000000007064019000005fb03300197000000000803004b000000000600a019000005fb0330009c00000000030700190000000003066019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d0000000003000412000005fd063001970000000003000410000000000636004b000000430000c13d0000022406200039000000000661034f0000000007240049000000230770008a000000000606043b000005fb08000041000000000976004b00000000090000190000000009088019000005fb07700197000005fb0a600197000000000b7a004b000000000800801900000000077a013f000005fb0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000005fc0760009c0000010d0000213d00000000076400490000002004500039000005fb08000041000000000974004b00000000090000190000000009082019000005fb07700197000005fb0a400197000000000b7a004b000000000800801900000000077a013f000005fb0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000060601000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000061e01000041000000c40010043f0000061f01000041000000e40010043f0000061d01000041000017c80001043017c616d70000040f0000000001000019000017c70001042e000000040240008a000005fb03000041000000600620008c00000000060000190000000006034019000005fb02200197000000000702004b000000000300a019000005fb0220009c00000000020600190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000702043b000005fc0270009c0000010d0000213d00000004067000390000000002640049000005fb03000041000002600820008c00000000080000190000000008034019000005fb02200197000000000902004b000000000300a019000005fb0220009c00000000020800190000000002036019000000000202004b0000010d0000c13d0000000002000411000080010220008c000000430000c13d0000000002000412000005fd022001970000000003000410000000000232004b000000430000c13d0000012402700039000000000321034f0000004402700039000000000221034f000000000202043b000005fd02200197000000000303043b000005fe0830009c000001310000413d00000044015000390000060502000041000000000021043500000024015000390000000802000039000000000021043500000606010000410000000000150435000000040150003900000020020000390000000000210435000005f301000041000005f30250009c0000000001054019000000400110021000000607011001c7000017c80001043017c615de0000040f000000040240008a000005fb03000041000000600520008c00000000050000190000000005034019000005fb02200197000000000602004b000000000300a019000005fb0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000b00000002001d000005fc0220009c0000010d0000213d0000000b020000290000000402200039000a00000002001d0000000002240049000005fb03000041000002600420008c00000000040000190000000004034019000005fb02200197000000000502004b000000000300a019000005fb0220009c00000000020400190000000002036019000000000202004b0000010f0000613d0000000001000019000017c8000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d0000000001000412000005fd011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d0000002003100039000006200400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b0000002404100039000000000034043500000024030000390000000000310435000006210310009c0000015e0000413d000006360100004100000000001004350000004101000039000000040010043f0000063701000041000017c800010430000001c405700039000000000551034f0000000007740049000000230770008a000000000505043b000005fb08000041000000000975004b00000000090000190000000009088019000005fb07700197000005fb0a500197000000000b7a004b000000000800801900000000077a013f000005fb0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000006650019000000000161034f000000000501043b000005fc0150009c0000010d0000213d00000000015400490000002004600039000005fb06000041000000000714004b00000000070000190000000007062019000005fb01100197000005fb08400197000000000918004b0000000006008019000000000118013f000005fb0110009c00000000010700190000000001066019000000000101004b0000010d0000c13d0000000001000414000005ff0610009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f0000000004010433000005ff0540009c000001740000413d00000606020000410000000000230435000000a40210003900000605040000410000000000420435000000840210003900000008040000390000000000420435000000640110003900000020020000390000000000210435000005f301000041000005f30230009c0000000001034019000000400110021000000607011001c7000017c800010430000000c0022002100000062202200197000000400110021000000623011000410000062401100197000000000112019f00000060024002100000062502200197000000000121019f00000626011001c70000800302000039000000000300001900000000040000190000000005000019000000000600001917c617b20000040f00030000000103550000006001100270000105f30010019d000005f3041001970000003f014000390000062705100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000005fc0630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001022001900000025b0000613d0000000901000029000000000101004b0000125b0000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b0000028f0000c13d0000000702000029000000000121034f000000000101043b000000800210008c000002c40000413d00000080021002700000062d0310009c000000000201a0190000062d0310009c0000000003000019000000100300203900000008043001bf000005fc0520009c00000000030420190000004004200270000005fc0520009c000000000204201900000004043001bf000005f30520009c00000000030420190000002004200270000005f30520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b000002db0000613d00000000040304330000062c04400197000000f805200210000000000445019f0000062e0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c00000000010020190000000902000029000000210220003900000000001204350000041b0000013d000000000441034f000000000404043b0000060004400197000006080740009c000002650000c13d000000430460008c000002710000213d0000060601000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000061b01000041000000c40010043f0000061c01000041000000e40010043f0000061d01000041000017c800010430000080060620008c00000000060000190000024a0000c13d000000040650008c00000000060000190000024a0000413d00000001060000390000000207400367000000000707043b0000060007700197000006010870009c000002490000613d000006020870009c000002490000613d000006030870009c000002490000613d000006040670009c00000000060000190000000106006039000000010660018f17c616e10000040f17c617260000040f0000000002010019000000400100043d000b00000001001d17c615c80000040f0000000b040000290000000001410049000005f302000041000005f30310009c0000000001028019000005f30340009c000000000204401900000040022002100000006001100210000000000121019f000017c70001042e0000000001010433000005f302000041000005f30410009c0000000001028019000005f30430009c000000000203401900000040022002100000006001100210000000000121019f000017c800010430000006090140009c000000430000613d0000060601000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000060a01000041000000c40010043f0000060b01000041000017c8000104300000002404500039000000000441034f000000000404043b000b00000004001d000005fd0440009c0000010d0000213d000000e402200039000000000221034f0000004404500039000000000141034f000000000101043b000a00000001001d000000000102043b0000060c02000041000000800020043f000005fd02300197000800000002001d000000840020043f000005fd01100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c0000033d0000c13d0000000103000031000000200130008c00000020040000390000000004034019000003690000013d000000710320008c000002e10000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d0000000004420019000005fb05000041000000000643004b00000000060000190000000006058019000005fb04400197000005fb07300197000000000847004b0000000005008019000000000447013f000005fb0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004430019000000000141034f000000000301043b000005fc0130009c0000010d0000213d00000000013200490000002004400039000005fb02000041000000000514004b00000000050000190000000005022019000005fb01100197000005fb06400197000000000716004b0000000002008019000000000116013f000005fb0110009c00000000010500190000000001026019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000005df0000c13d0000000003000031000007880000013d000000400200043d000900000002001d0000062b0220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000002d00000413d00000009030000290000000003030433000000000303004b000004120000c13d000006360100004100000000001004350000003201000039000000040010043f0000063701000041000017c800010430000000020120008c000003900000c13d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d000000000201043b000000800120008c0000054d0000413d00000080012002700000062d0320009c000000000102a0190000062d0320009c0000000003000019000000100300203900000008043001bf000005fc0510009c00000000030420190000004004100270000005fc0510009c000000000104201900000004043001bf000005f30510009c00000000030420190000002004100270000005f30510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f00000002043000390000000004410436000000210530003900000005055002720000032a0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003220000413d000000000500004b0000032c0000613d0000000005010433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000056a0000013d000005f302000041000005f30310009c0000000001028019000000c0011002100000060d011001c70000000b0200002917c617b70000040f00000000030100190000006003300270000005f303300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003560000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b0000034e0000413d000000000705004b000003650000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000003ec0000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000060e030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000060f05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c000004ec0000c13d00000001020000390000000101000031000004fd0000013d000000010120008c0000046c0000c13d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005ef0000413d00000080012002700000062d0320009c000000000102a0190000062d0320009c0000000003000019000000100300203900000008043001bf000005fc0510009c00000000030420190000004004100270000005fc0510009c000000000104201900000004043001bf000005f30510009c00000000030420190000002004100270000005f30510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003d90000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003d10000413d000000000500004b000003db0000613d0000000005010433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000060c0000013d000000400200043d0000001f0430018f0000000503300272000003f90000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003f10000413d000000000504004b000004080000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f3010000410000000103000031000005f30430009c0000000003018019000005f30420009c000000000102401900000040011002100000006002300210000000000112019f000017c800010430000000f803100210000005fb04000041000000000101004b0000000001030019000000000104601900000000030204330000062c03300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c0000047e0000413d00000080012002700000062d0320009c000000000102a0190000062d0320009c0000000003000019000000100300203900000008043001bf000005fc0510009c00000000030420190000004004100270000005fc0510009c000000000104201900000004043001bf000005f30510009c00000000030420190000002004100270000005f30510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004590000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000004510000413d000000000500004b0000045b0000613d0000000005010433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c0000000002002019000000210310003900000000002304350000049b0000013d000000400100043d00000044021000390000062803000041000000000032043500000024021000390000001703000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000000400100043d0000062b0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004880000413d0000000004010433000000000404004b000002db0000613d000000f804200210000005fb05000041000000000202004b0000000002040019000000000205601900000000040304330000062c04400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c0000065c0000413d00000080023002700000062d0430009c000000000203a0190000062d0430009c0000000004000019000000100400203900000008054001bf000005fc0620009c00000000040520190000004005200270000005fc0620009c000000000205201900000004054001bf000005f30620009c00000000040520190000002005200270000005f30620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fc0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000004d90000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000004d10000413d000000000600004b000004db0000613d0000000006020433000000000606004b000002db0000613d00000000060504330000062c06600197000000f807400210000000000667019f0000062e0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006790000013d000005f304000041000005f30530009c000000000304801900000060033002100000004002200210000000000223019f000005f30310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c617b20000040f000000010220018f00030000000103550000006001100270000105f30010019d000005f3011001970000006003000039000700000003001d000000000301004b0000051d0000c13d00000007010000290000000031010434000300000003001d000000000202004b000005ba0000c13d000000000201004b0000070d0000c13d000000400300043d000b00000003001d000006060100004100000000001304350000000401300039000000060200002900000000002104350000002402300039000000050100002917c615b50000040f0000000b040000290000000001410049000005f302000041000005f30310009c0000000001028019000005f30340009c000000000204401900000040022002100000006001100210000000000121019f000017c800010430000005fc0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f00000005055002720000053d0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005350000413d000000000604004b000005010000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000005010000013d000000400100043d0000062b0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005570000413d0000000004010433000000000404004b000002db0000613d000000f804200210000005fb05000041000000000202004b0000000002040019000000000205601900000000040304330000062c04400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000007180000413d00000080023002700000062d0430009c000000000203a0190000062d0430009c0000000004000019000000100400203900000008054001bf000005fc0620009c00000000040520190000004005200270000005fc0620009c000000000205201900000004054001bf000005f30620009c00000000040520190000002005200270000005f30620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fc0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005a70000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000059f0000413d000000000600004b000005a90000613d0000000006020433000000000606004b000002db0000613d00000000060504330000062c06600197000000f807400210000000000667019f0000062e0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000007350000013d000000000201004b00000a0d0000c13d000006100100004100000000001004390000000b010000290000000400100443000005f3010000410000000002000414000005f30320009c0000000001024019000000c00110021000000611011001c7000080020200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000000000101004b00000a090000c13d000000400100043d00000044021000390000061a03000041000000000032043500000024021000390000001d03000039000000000032043500000606020000410000000000210435000000040210003900000006030000290000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000005f3054001970000000004430019000000000334004b000000000300001900000001030040390000000103300190000005e90000c13d0000000003000031000000000643004b000007860000813d000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c800010430000000400100043d0000062b0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005f90000413d0000000004010433000000000404004b000002db0000613d000000f804200210000005fb05000041000000000202004b0000000002040019000000000205601900000000040304330000062c04400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c0000099b0000413d00000080032002700000062d0420009c000000000302a0190000062d0420009c0000000004000019000000100400203900000008054001bf000005fc0630009c00000000040520190000004005300270000005fc0630009c000000000305201900000004054001bf000005f30630009c00000000040520190000002005300270000005f30630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000005fc0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006490000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000006410000413d000000000600004b0000064b0000613d0000000006030433000000000606004b000002db0000613d00000000060504330000062c06600197000000f807400210000000000667019f0000062e0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000009b80000013d000000400200043d0000062b0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006660000413d0000000005020433000000000505004b000002db0000613d000000f805300210000005fb06000041000000000303004b0000000003050019000000000306601900000000050404330000062c05500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006870000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b000006800000413d000000000143001900000000000104350000000004020433000000000504004b000006940000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b0000068d0000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000005fc0220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f0000062b0110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000062f0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000b8d0000413d00000080021002700000062d0310009c000000000201a0190000062d0310009c0000000003000019000000100300203900000008043001bf000005fc0520009c00000000030420190000004004200270000005fc0520009c000000000204201900000004043001bf000005f30520009c00000000030420190000002004200270000005f30520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000006f80000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000006f00000413d000000000400004b000006fa0000613d00000005040000290000000004040433000000000404004b000002db0000613d00000000040304330000062c04400197000000f805200210000000000445019f0000062e0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000bad0000013d000005f3020000410000000304000029000005f30340009c00000000030200190000000003044019000005f30410009c000000000102801900000060011002100000004002300210000000000121019f000017c800010430000000400200043d0000062b0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007220000413d0000000005020433000000000505004b000002db0000613d000000f805300210000005fb06000041000000000303004b0000000003050019000000000306601900000000050404330000062c05500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a4a0000413d00000080043002700000062d0530009c000000000403a0190000062d0530009c0000000005000019000000100500203900000008065001bf000005fc0740009c00000000050620190000004006400270000005fc0740009c000000000406201900000004065001bf000005f30740009c00000000050620190000002006400270000005f30740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fc0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007730000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b0000076b0000413d000000000700004b000007750000613d0000000007040433000000000707004b000002db0000613d00000000070604330000062c07700197000000f808500210000000000778019f0000062e0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000a670000013d000000000252034f0000000003430049000005ff0410009c0000079c0000413d000000400100043d00000044021000390000060503000041000000000032043500000024021000390000000803000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000005f30330019700000000023203df000000c001100210000006220110019700000634011001c700000000011203af000080100200003917c617c10000040f00000000030100190000006003300270000105f30030019d000005f30330019700030000000103550000000102200190000009800000613d0000003f013000390000062701100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fc0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000007c60000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000007be0000413d000000000400004b000007c80000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000007d80000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000007d00000413d000000000604004b000007e70000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c220000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b000005fb06000041000000000753004b00000000070000190000000007068019000005fb05500197000005fb08300197000000000958004b0000000006008019000000000558013f000005fb0550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000005fc0350009c0000010d0000213d000000050350021000000000043400490000002006100039000005fb01000041000000000746004b00000000070000190000000007012019000005fb04400197000005fb08600197000000000948004b0000000001008019000000000448013f000005fb0440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d00000020041000390000063505500198000008260000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b0000081e0000413d000000000200004b000008280000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000005fc0520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f000005f302000041000005f30340009c0000000003020019000000000304401900000040033002100000000001010433000005f30410009c00000000010280190000006001100210000000000131019f0000000003000414000005f30430009c0000000002034019000000c002200210000000000112019f00000633011001c7000080100200003917c617b70000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b000005fb06000041000000000754004b00000000070000190000000007068019000005fb05500197000005fb08400197000000000958004b0000000006008019000000000558013f000005fb0550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000001140019000000000313034f000000000303043b000005fc0430009c0000010d0000213d00000000023200490000002004100039000005fb01000041000000000524004b00000000050000190000000005012019000005fb02200197000005fb06400197000000000726004b0000000001008019000000000226013f000005fb0220009c000000000105c019000000000101004b0000010d0000c13d00000000010004140000000202000367000000000503004b000011590000c13d0000000003000031000005f30410009c0000078a0000213d000005f30330019700000000023203df000000c001100210000006220110019700000634011001c700000000011203af000080100200003917c617c10000040f00000000030100190000006003300270000105f30030019d000005f30330019700030000000103550000000102200190000012ab0000613d0000003f013000390000062701100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fc0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000008a70000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000089f0000413d000000000400004b000008a90000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008b90000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008b10000413d000000000604004b000008c80000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000c220000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000639030000410000000000320435000001c00300003900000000003104350000063a0310009c0000012b0000213d000001e003100039000000400030043f000005f303000041000005f30420009c000000000203801900000040022002100000000001010433000005f30410009c00000000010380190000006001100210000000000121019f0000000002000414000005f30420009c0000000002038019000000c002200210000000000112019f00000633011001c7000080100200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b0000063b0300004100000000003204350000008003400039000000000013043500000060014000390000063c03000041000000000031043500000040014000390000063d030000410000000000310435000000800100003900000000001404350000063e0140009c0000012b0000213d0000000904000029000000a001400039000000400010043f000005f301000041000005f30320009c000000000201801900000040022002100000000003040433000005f30430009c00000000030180190000006003300210000000000223019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001022001900000010d0000613d000000000301043b000000400100043d00000042021000390000000704000029000000000042043500000020021000390000063f0400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006160310009c0000012b0000213d0000008003100039000000400030043f000005f303000041000005f30420009c000000000203801900000040022002100000000001010433000005f30410009c00000000010380190000006001100210000000000121019f0000000002000414000005f30420009c0000000002038019000000c002200210000000000112019f00000633011001c7000080100200003917c617b70000040f00000001012001900000125b0000c13d0000010d0000013d0000001f0430018f00000005023002720000098b0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000009840000413d000000000504004b000009990000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c800010430000000400300043d0000062b0430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000009a50000413d0000000005030433000000000505004b000002db0000613d000000f805200210000005fb06000041000000000202004b0000000002050019000000000206601900000000050404330000062c05500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b1f0000413d00000080042002700000062d0520009c000000000402a0190000062d0520009c0000000005000019000000100500203900000008065001bf000005fc0740009c00000000050620190000004006400270000005fc0740009c000000000406201900000004065001bf000005f30740009c00000000050620190000002006400270000005f30740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fc0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000009f60000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000009ee0000413d000000000700004b000009f80000613d0000000007040433000000000707004b000002db0000613d00000000070604330000062c07700197000000f808500210000000000778019f0000062e0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b3c0000013d00000007010000290000000001010433000000000201004b00000a370000613d000005fb02000041000000200310008c00000000030000190000000003024019000005fb01100197000000000401004b000000000200a019000005fb0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a370000c13d000000400100043d00000064021000390000061803000041000000000032043500000044021000390000061903000041000000000032043500000024021000390000002a03000039000000000032043500000606020000410000000000210435000000040210003900000006030000290000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000000400300043d0000002401300039000000090200002900000000002104350000060c010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000ab80000c13d0000000103000031000000200130008c0000002004000039000000000403401900000aeb0000013d000000400400043d0000062b0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000a540000413d0000000006040433000000000606004b000002db0000613d000000f806300210000005fb07000041000000000303004b0000000003060019000000000307601900000000060504330000062c06600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c340000413d00000080053002700000062d0630009c000000000503a0190000062d0630009c0000000006000019000000100600203900000008076001bf000005fc0850009c00000000060720190000004007500270000005fc0850009c000000000507201900000004076001bf000005f30850009c00000000060720190000002007500270000005f30850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fc0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000aa50000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000a9d0000413d000000000800004b00000aa70000613d0000000008050433000000000808004b000002db0000613d00000000080704330000062c08800197000000f809600210000000000889019f0000062e0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000c510000013d000005f302000041000005f30310009c00000000010280190000000704000029000005f30340009c00000000020440190000004002200210000000c001100210000000000121019f00000612011001c70000000b0200002917c617b70000040f000000070a00002900000000030100190000006003300270000005f303300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000ad70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000acf0000413d000000000705004b00000ae70000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000bfc0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000005fc0410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000ca20000c13d00000044021000390000000a03000029000000000032043500000020021000390000060e03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006160310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006170310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000060f040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000db20000c13d0000000102000039000000010100003100000dc50000013d000000400400043d0000062b0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b290000413d0000000006040433000000000606004b000002db0000613d000000f806200210000005fb07000041000000000202004b0000000002060019000000000207601900000000060504330000062c06600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000cb60000413d00000080052002700000062d0620009c000000000502a0190000062d0620009c0000000006000019000000100600203900000008076001bf000005fc0850009c00000000060720190000004007500270000005fc0850009c000000000507201900000004076001bf000005f30850009c00000000060720190000002007500270000005f30850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fc0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000b7a0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000b720000413d000000000800004b00000b7c0000613d0000000008050433000000000808004b000002db0000613d00000000080704330000062c08800197000000f809600210000000000889019f0000062e0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000cd30000013d000000400200043d000500000002001d0000062b0220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000b990000413d00000005030000290000000003030433000000000303004b000002db0000613d000000f803100210000005fb04000041000000000101004b0000000001030019000000000104601900000000030204330000062c03300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d0000000004430019000005fb05000041000000000641004b00000000060000190000000006058019000005fb04400197000005fb07100197000000000847004b0000000005008019000000000447013f000005fb0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000005fc0510009c0000010d0000213d00000000051300490000002003400039000005fb04000041000000000653004b00000000060000190000000006042019000005fb05500197000005fb07300197000000000857004b0000000004008019000000000557013f000005fb0550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000ee40000c13d000000000132034f000000000101043b000000010200008a000005fb03000041000000000221004b00000000020000190000000002032019000005fb01100197000005fb0410009c0000000003008019000005fb01100167000005fb0110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010420000c13d000000400100043d000400000001001d0000062b0110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000062e02000041000000000021043500000001010000390000000000130435000010420000013d000000400200043d0000001f0430018f000000050330027200000c090000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c010000413d000000000504004b00000c180000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f3010000410000000103000031000005f30430009c0000000003018019000005f30420009c000000000102401900000040011002100000006002300210000000000112019f000017c800010430000000400100043d00000044021000390000063803000041000000000032043500000024021000390000001f03000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000607011001c7000017c800010430000000400500043d0000062b0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c3e0000413d0000000007050433000000000707004b000002db0000613d000000f807300210000005fb08000041000000000303004b0000000003070019000000000308601900000000070604330000062c07700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d340000413d00000080063002700000062d0730009c000000000603a0190000062d0730009c0000000007000019000000100700203900000008087001bf000005fc0960009c00000000070820190000004008600270000005fc0960009c000000000608201900000004087001bf000005f30960009c00000000070820190000002008600270000005f30960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000005fc0a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000c8f0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000c870000413d000000000900004b00000c910000613d0000000009060433000000000909004b000002db0000613d00000000090804330000062c09900197000000f80a70021000000000099a019f0000062e0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000d510000013d00000064021000390000061303000041000000000032043500000044021000390000061403000041000000000032043500000024021000390000003603000039000000000032043500000606020000410000000000210435000000040210003900000006030000290000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000000400500043d0000062b0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000cc00000413d0000000007050433000000000707004b000002db0000613d000000f807200210000005fb08000041000000000202004b0000000002070019000000000208601900000000070604330000062c07700197000000000227019f0000000000260435000000400600043d0000062b0260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000062f0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e150000413d00000080072002700000062d0820009c000000000702a0190000062d0820009c0000000008000019000000100800203900000008098001bf000005fc0a70009c00000000080920190000004009700270000005fc0a70009c000000000709201900000004098001bf000005f30a70009c00000000080920190000002009700270000005f30a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000005fc0b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d210000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d190000413d000000000a00004b00000d230000613d000000000a070433000000000a0a004b000002db0000613d000000000a0904330000062c0aa00197000000f80b800210000000000aab019f0000062e0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e320000013d000000400600043d0000062b0760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d3e0000413d0000000008060433000000000808004b000002db0000613d000000f808300210000005fb09000041000000000303004b0000000003080019000000000309601900000000080704330000062c08800197000000000338019f0000000000370435000000400700043d0000062b0370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000062f090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f470000413d00000080083002700000062d0930009c000000000803a0190000062d0930009c00000000090000190000001009002039000000080a9001bf000005fc0b80009c00000000090a2019000000400a800270000005fc0b80009c00000000080a2019000000040a9001bf000005f30b80009c00000000090a2019000000200a800270000005f30b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000005fc0ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000d9f0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000d970000413d000000000b00004b00000da10000613d000000000b080433000000000b0b004b000002db0000613d000000000b0a04330000062c0bb00197000000f80c900210000000000bbc019f0000062e0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000f640000013d000005f304000041000005f30520009c00000000020480190000004002200210000005f30530009c00000000030480190000006003300210000000000223019f000005f30310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c617b20000040f000000010220018f00030000000103550000006001100270000105f30010019d000005f3011001970000006003000039000900000003001d000000000301004b00000de50000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f1a0000c13d000000000201004b000011110000c13d000000400300043d000b00000003001d0000060601000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a0100002917c615b50000040f0000000b040000290000000001410049000005f302000041000005f30310009c0000000001028019000005f30340009c000000000204401900000040022002100000006001100210000000000121019f000017c800010430000005fc0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fc0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e050000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000dfd0000413d000000000604004b00000dc90000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000dc90000013d000000400700043d0000062b0870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e1f0000413d0000000009070433000000000909004b000002db0000613d000000f809200210000005fb0a000041000000000202004b000000000209001900000000020a601900000000090804330000062c09900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e3f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e380000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000e4e0000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e470000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000e5d0000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000e560000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000e6c0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000e650000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000e7b0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000e740000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000e8a0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000e830000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000005fc0450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000005fb0a000041000000000b96004b000000000b000019000000000b0a8019000005fb09900197000005fb0c600197000000000d9c004b000000000a00801900000000099c013f000005fb0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fc0a60009c0000010d0000213d000000000a6800490000002008900039000005fb09000041000000000ba8004b000000000b000019000000000b092019000005fb0aa00197000005fb0c800197000000000dac004b0000000009008019000000000aac013f000005fb0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012790000c13d000000000687034f000000000606043b000000010700008a000005fb08000041000000000776004b00000000070000190000000007082019000005fb06600197000005fb0960009c0000000008008019000005fb06600167000005fb0660009c00000000070860190000006006000039000000000707004b000013120000c13d0000062b0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062e070000410000000000760435000000010600003900000000006504350000000006050019000013120000013d000000380210008c000010250000413d0000002002100270000005f30310009c00000000030100190000000003022019000005f30210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d0000062b0440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f020000413d00000004040000290000000004040433000000000404004b000002db0000613d00000000040304330000062c04400197000000f805200210000000000445019f00000630044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010420000013d000000000201004b00000f310000c13d000006100100004100000000001004390000000b010000290000000400100443000005f3010000410000000002000414000005f30320009c0000000001024019000000c00110021000000611011001c7000080020200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000000000101004b000005cd0000613d00000009010000290000000001010433000000000201004b000000430000613d000005fb02000041000000200310008c00000000030000190000000003024019000005fb01100197000000000401004b000000000200a019000005fb0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a220000613d000000430000013d000000400800043d0000062b0980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000f510000413d000000000a080433000000000a0a004b000002db0000613d000000f80a300210000005fb0b000041000000000303004b00000000030a001900000000030b6019000000000a0904330000062c0aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000f710000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000f6a0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000f800000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000f790000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000f8f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000f880000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000f9e0000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000f970000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b00000fad0000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000fa60000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b00000fbc0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b00000fb50000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b00000fcb0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b00000fc40000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000005fc0450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000005fb0a000041000000000b96004b000000000b000019000000000b0a8019000005fb09900197000005fb0c600197000000000d9c004b000000000a00801900000000099c013f000005fb0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fc0a60009c0000010d0000213d000000000a6800490000002008900039000005fb09000041000000000ba8004b000000000b000019000000000b092019000005fb0aa00197000005fb0c800197000000000dac004b0000000009008019000000000aac013f000005fb0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012c60000c13d000000000687034f000000000606043b000000010700008a000005fb08000041000000000776004b00000000070000190000000007082019000005fb06600197000005fb0960009c0000000008008019000005fb06600167000005fb0660009c00000000070860190000006006000039000000000707004b000013a50000c13d0000062b0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062e070000410000000000760435000000010600003900000000006504350000000006050019000013a50000013d000000400200043d000400000002001d0000062b0220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010310000413d00000004030000290000000003030433000000000303004b000002db0000613d000000f80110021000000000030204330000062c03300197000000000113019f000005fb01100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b000010b70000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b000005fb04000041000000000659004b00000000060000190000000006048019000005fb05500197000005fb07900197000000000857004b0000000004008019000000000557013f000005fb0550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000005fc0a20009c0000010d0000213d00000000032300490000002009900039000005fb0a000041000000000b39004b000000000b000019000000000b0a2019000005fb03300197000005fb09900197000000000c39004b000000000a008019000000000339013f000005fb0330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d0000000003450019000000000363001900000000037300190000000003830019000000000223001900000000030104330000000002320019000005fc02200197000000380320008c000011620000413d0000002003200270000005f30420009c00000000040200190000000004032019000005f30320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d0000062b0560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010a10000413d0000000005060433000000000505004b000002db0000613d00000000050404330000062c05500197000000f807300210000000000557019f00000632055001c700000000005404350000000303300210000000f80330008900000000023201cf000000210360003900000000002304350000117c0000013d00000629010000410000000000100439000005f3010000410000000002000414000005f30320009c0000000001024019000000c0011002100000062a011001c70000800b0200003917c617b70000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000111c0000413d00000080021002700000062d0310009c000000000201a0190000062d0310009c0000000003000019000000100300203900000008043001bf000005fc0520009c00000000030420190000004004200270000005fc0520009c000000000204201900000004043001bf000005f30520009c00000000030420190000002004200270000005f30520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000005fc0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000442043600000021053000390000000505500272000010fe0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000010f60000413d000000000500004b000011000000613d0000000005020433000000000505004b000002db0000613d00000000050404330000062c05500197000000f806300210000000000556019f0000062e0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c000000000100201900000021032000390000000000130435000011390000013d000005f3020000410000000804000029000005f30340009c00000000030200190000000003044019000005f30410009c000000000102801900000060011002100000004002300210000000000121019f000017c800010430000000400200043d0000062b0320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011260000413d0000000004020433000000000404004b000002db0000613d000000f804100210000005fb05000041000000000101004b0000000001040019000000000105601900000000040304330000062c04400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011460000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b0000113f0000413d0000000002430019000006400400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000005fc0420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000104a0000013d000000000343001a000005f304400197000005e90000413d0000000005000031000000000635004b000005e90000413d000000000242034f00000000033500490000087b0000013d000000400600043d0000062b0360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a0000116c0000413d0000000004060433000000000404004b000002db0000613d000000f80220021000000000040304330000062c04400197000000000242019f0000063102200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b000005fb07000041000000000854004b00000000080000190000000008078019000005fb05500197000005fb09400197000000000a59004b0000000007008019000000000559013f000005fb0550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000005fc0340009c0000010d0000213d00000000024200490000002005500039000005fb03000041000000000725004b00000000070000190000000007032019000005fb02200197000005fb08500197000000000928004b0000000003008019000000000228013f000005fb0220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000011b40000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000011ad0000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000011c50000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011bd0000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b000011d60000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011ce0000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b000011e70000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011df0000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b000011f80000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011f00000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b000012090000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000012010000413d0000000008870019000000000008043500000000066700190000001f0740018f0000002008600039000000020550036700000005094002720000121a0000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012120000413d000000000a07004b000012290000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b000012370000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012300000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000005fc0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f000005f301000041000005f30430009c000000000301801900000040033002100000000002020433000005f30420009c00000000020180190000006002200210000000000232019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001012001900000010d0000613d0000000a0100002917c617900000040f0000064102000041000000000020043900000008020000290000000400200443000900000001001d0000800a01000039000000240200003917c615a40000040f0000000902000029000000000112004b0000000001000019000000010100a03917c616590000040f0000000b01000029000001e4021000390000000a0100002917c616710000040f000000000300003117c6169d0000040f0000064201000041000000400200043d0000000000120435000005f301000041000005f30320009c0000000001024019000000400110021000000643011001c7000017c70001042e000000380760008c000012f80000413d0000002007600270000005f30860009c00000000080600190000000008072019000005f30760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062b0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012940000413d0000000009050433000000000909004b000002db0000613d00000000090804330000062c09900197000000f80a70021000000000099a019f00000630099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000013120000013d0000001f0430018f0000000502300272000012b60000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000012af0000413d000000000504004b000012c40000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c800010430000000380760008c0000138b0000413d0000002007600270000005f30860009c00000000080600190000000008072019000005f30760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062b0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012e10000413d0000000009050433000000000909004b000002db0000613d00000000090804330000062c09900197000000f80a70021000000000099a019f00000630099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000013a50000013d0000062b0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013010000413d0000000008050433000000000808004b000002db0000613d000000f80660021000000000080704330000062c08800197000000000668019f000005fb0660016700000000006704350000000006050019000000400500043d0000062b0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000131c0000413d0000000009050433000000000909004b000002db0000613d00000000090704330000062c0990019700000631099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000005fb0a000041000000000d9c004b000000000d000019000000000d0a8019000005fb09900197000005fb0ec00197000000000f9e004b000000000a00801900000000099e013f000005fb0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fc0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fb0d000041000000000e7c004b000000000e000019000000000e0d2019000005fb07700197000005fb0cc00197000000000f7c004b000000000d00801900000000077c013f000005fb0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fc09700197000000380790008c0000141e0000413d0000002007900270000005f30890009c000000000709a019000005f30890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062b0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013750000413d000000000b070433000000000b0b004b000002db0000613d000000000b0a04330000062c0bb00197000000f80c800210000000000bbc019f000006320bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014370000013d0000062b0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013940000413d0000000008050433000000000808004b000002db0000613d000000f80660021000000000080704330000062c08800197000000000668019f000005fb0660016700000000006704350000000006050019000000400500043d0000062b0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000013af0000413d0000000009050433000000000909004b000002db0000613d00000000090704330000062c0990019700000631099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000005fb0a000041000000000d9c004b000000000d000019000000000d0a8019000005fb09900197000005fb0ec00197000000000f9e004b000000000a00801900000000099e013f000005fb0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fc0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fb0d000041000000000e7c004b000000000e000019000000000e0d2019000005fb07700197000005fb0cc00197000000000f7c004b000000000d00801900000000077c013f000005fb0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fc09700197000000380790008c000014e10000413d0000002007900270000005f30890009c000000000709a019000005f30890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062b0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000014080000413d000000000b070433000000000b0b004b000002db0000613d000000000b0a04330000062c0bb00197000000f80c800210000000000bbc019f000006320bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014fa0000013d000000400700043d0000062b0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014270000413d000000000a070433000000000a0a004b000002db0000613d000000f809900210000000000a0804330000062c0aa001970000000009a9019f00000631099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000005fb0a000041000000000b83004b000000000b000019000000000b0a8019000005fb08800197000005fb0c300197000000000d8c004b000000000a00801900000000088c013f000005fb0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000005fc0480009c0000010d0000213d00000000048900490000002009300039000005fb03000041000000000a49004b000000000a000019000000000a032019000005fb04400197000005fb0b900197000000000c4b004b000000000300801900000000044b013f000005fb0440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006260a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b0000146f0000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000014680000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b0000147e0000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b000014770000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b0000148d0000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000014860000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a8002720000149e0000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000014960000413d000000000b06004b000014ad0000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000014bb0000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000014b40000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000005fc0510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000005f301000041000005f30240009c0000000002010019000000000204401900000040022002100000000003030433000005f30430009c00000000030180190000006003300210000000000223019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001012001900000125b0000c13d0000010d0000013d000000400700043d0000062b0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014ea0000413d000000000a070433000000000a0a004b000002db0000613d000000f809900210000000000a0804330000062c0aa001970000000009a9019f00000631099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000005fb0a000041000000000b82004b000000000b000019000000000b0a8019000005fb08800197000005fb0c200197000000000d8c004b000000000a00801900000000088c013f000005fb0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000005fc0480009c0000010d0000213d00000000048900490000002009200039000005fb02000041000000000a49004b000000000a000019000000000a022019000005fb04400197000005fb0b900197000000000c4b004b000000000200801900000000044b013f000005fb0440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d0000002004200039000006330a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b000015320000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b0000152b0000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b000015410000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b0000153a0000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000015500000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000015490000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000015610000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000015590000413d000000000b06004b000015700000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b0000157e0000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000015770000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000005fc0510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f000005f301000041000005f30340009c0000000003010019000000000304401900000040033002100000000002020433000005f30420009c00000000020180190000006002200210000000000232019f0000000003000414000005f30430009c0000000001034019000000c001100210000000000121019f00000633011001c7000080100200003917c617b70000040f00000001012001900000125b0000c13d0000010d0000013d0000000003010019000005f3010000410000000004000414000005f30540009c0000000001044019000000c001100210000000600220021000000000011200190000064401100041000000000203001917c617b70000040f0000000102200190000015b30000613d000000000101043b000000000001042d0000000001000019000017c80001043000000000030104330000000002320436000000000403004b000015c10000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000015ba0000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000015d70000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000015d00000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a0000000003100031000005fb010000410000005f0230008c00000000020000190000000002012019000005fb04300197000000000504004b0000000001008019000005fb0440009c000000000102c019000000000101004b000016240000613d00000002010003670000004402100370000000000202043b000005fc0420009c000016240000213d0000000003230049000005fb04000041000002600530008c00000000050000190000000005044019000005fb03300197000000000603004b000000000400a019000005fb0330009c00000000030500190000000003046019000000000303004b000016240000c13d0000000003000411000080010330008c000016220000c13d0000000003000412000005fd033001970000000004000410000000000343004b000016220000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b000016260000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d000005f302000041000005f30310009c0000000001028019000000c001100210000080010200003917c617b20000040f000000010300002900030000000103550000006001100270000105f30010019d000000200130011a000000010120019500000001012001900000163e0000613d0000000001000019000017c70001042e0000000001000019000017c80001043000000000431200a900000000422300d9000000000112004b000016530000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b000016130000613d000005f302000041000005f30410009c0000000001028019000000c00110021000000633011001c700008009020000390000800104000039000000000500001917c617b20000040f0000000003000415000000020330008a00000020033000c90000161b0000013d000000400100043d00000064021000390000064503000041000000000032043500000044021000390000064603000041000000000032043500000024021000390000002503000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c800010430000000000101004b0000165c0000613d000000000001042d000000400100043d00000064021000390000064703000041000000000032043500000044021000390000064803000041000000000032043500000024021000390000002203000039000000000032043500000606020000410000000000210435000000040210003900000020030000390000000000320435000005f302000041000005f30310009c0000000001028019000000400110021000000615011001c7000017c800010430000000000300003100000000041300490000001f0540008a0000000204000367000000000224034f000000000202043b000005fb06000041000000000752004b00000000070000190000000007064019000005fb05500197000005fb08200197000000000958004b000000000600a019000000000558013f000005fb0550009c00000000050700190000000005066019000000000505004b0000169b0000613d0000000001120019000000000214034f000000000202043b000005fc0420009c0000169b0000213d00000000032300490000002001100039000005fb04000041000000000531004b00000000050000190000000005042019000005fb03300197000005fb06100197000000000736004b0000000004008019000000000336013f000005fb0330009c00000000030500190000000003046019000000000303004b0000169b0000c13d000000000001042d0000000001000019000017c800010430000006490420009c000016cf0000813d0000003f04200039000000200500008a000000000554016f000000400400043d0000000005540019000000000645004b00000000060000190000000106004039000005fc0750009c000016cf0000213d0000000106600190000016cf0000c13d000000400050043f00000000042404360000000005120019000000000335004b000016d50000213d0000001f0320018f00000002011003670000000505200272000016bd0000613d000000000600001900000005076002100000000008740019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000016b50000413d000000000603004b000016cc0000613d0000000505500210000000000151034f00000000055400190000000303300210000000000605043300000000063601cf000000000636022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000000012400190000000000010435000000000001042d000006360100004100000000001004350000004101000039000000040010043f0000063701000041000017c8000104300000000001000019000017c8000104300000000001000411000080010110008c000016db0000613d000000000001042d000006360100004100000000001004350000000101000039000000040010043f0000063701000041000017c80001043000000000070200190000000202000367000000000803004b000016f40000613d000000000805004b000016ff0000613d000005f3084001970000000004450019000000000554004b000000000500001900000001050040390000000105500190000017200000c13d0000000005000031000000000945004b000017200000413d000000000282034f0000000004450049000017000000013d000000000305004b0000170e0000613d000000000345001a000005f304400197000017200000413d0000000005000031000000000835004b000017200000413d000000000242034f00000000033500490000170f0000013d0000000004000031000005f30440019700000000024203df000000c00110021000000622011001970000064a011001c700000000011203af000000000206004b0000000005000019000000010500c03900008009020000390000000004070019000000000600001917c617bc0000040f0000171b0000013d00000000030000310000064a040000410000063405000041000000000606004b0000000004056019000000c0011002100000062201100197000000000114019f000005f30330019700000000023203df00000000011203af000000000207001917c617bc0000040f00030000000103550000006001100270000105f30010019d000000010120018f000000000001042d000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c8000104300000000102000031000000000101004b0000176f0000613d000006490120009c000017690000813d0000003f01200039000000200300008a000000000331016f000000400100043d0000000003310019000000000413004b00000000040000190000000104004039000005fc0530009c000017690000213d0000000104400190000017690000c13d000000400030043f00000000032104360000001f042000390000000504400272000017470000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000173f0000413d000000000400004b000017490000613d0000000104000031000000000442004b0000178e0000213d00000003050003670000001f0420018f0000000502200272000017590000613d000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000726004b000017510000413d000000000604004b000017680000613d0000000502200210000000000525034f00000000022300190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d000006360100004100000000001004350000004101000039000000040010043f0000063701000041000017c80001043000000003010003670000001f0420018f00000005032002720000177b0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000635004b000017740000413d000000000504004b000017890000613d00000003044002100000000503300210000000000503043300000000054501cf000000000545022f000000000131034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f301000041000005f30320009c00000000010240190000006001100210000017c8000104300000000001000019000017c800010430000000e0031000390000000202000367000000000332034f000000000303043b000005fd033001980000179a0000613d0000012001100039000000000112034f000000000101043b000017ab0000013d000000a003100039000000000332034f0000006004100039000000000442034f000000000404043b000000000503043b00000000634500a9000000000605004b000017a60000613d00000000655300d9000000000445004b000017ac0000c13d0000012001100039000000000112034f000000000101043b000000000131001a000017ac0000413d000000000001042d000006360100004100000000001004350000001101000039000000040010043f0000063701000041000017c800010430000017b5002104210000000102000039000000000001042d0000000002000019000000000001042d000017ba002104230000000102000039000000000001042d0000000002000019000000000001042d000017bf002104210000000102000039000000000001042d0000000002000019000000000001042d000017c4002104230000000102000039000000000001042d0000000002000019000000000001042d000017c600000432000017c70001042e000017c80001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f190100000000000000000000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39202bcce700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000002000000000000000000000000000000000000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f706575650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c00000000000000000000000000000000000000000000000100000000000000000100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026e2b1ced15a158459055c41a56ae7666187938e1aa1b1ae3dd781c24f40eec3", + "bytecode": "0x0004000000000002000b00000000000200000000030100190000006003300270000005f20430019700030000004103550002000000010355000005f20030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000004000031000000040140008c000000410000413d0000000201000367000000000201043b000000e002200270000005f40320009c000000450000a13d000005f50320009c000000a90000613d000005f60320009c000000ea0000613d000005f70220009c000000a60000c13d000000040240008a000005fa03000041000000200420008c00000000040000190000000004034019000005fa05200197000000000605004b000000000300a019000005fa0550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000005fb0310009c0000010d0000213d0000000001120049000005fa02000041000002600310008c00000000030000190000000003024019000005fa01100197000000000401004b000000000200a019000005fa0110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d000000200100003900000100001004430000012000000443000005f301000041000017c40001042e000000000104004b000000a60000c13d0000000001000019000017c40001042e000005f80320009c000000eb0000613d000005f90220009c000000a60000c13d000000040240008a000005fa03000041000000600520008c00000000050000190000000005034019000005fa02200197000000000602004b000000000300a019000005fa0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000005fb0320009c0000010d0000213d00000004052000390000000003540049000005fa06000041000002600730008c00000000070000190000000007064019000005fa03300197000000000803004b000000000600a019000005fa0330009c00000000030700190000000003066019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d0000000003000412000005fc063001970000000003000410000000000636004b000000430000c13d0000022406200039000000000661034f0000000007240049000000230770008a000000000606043b000005fa08000041000000000976004b00000000090000190000000009088019000005fa07700197000005fa0a600197000000000b7a004b000000000800801900000000077a013f000005fa0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000005fb0760009c0000010d0000213d00000000076400490000002004500039000005fa08000041000000000974004b00000000090000190000000009082019000005fa07700197000005fa0a400197000000000b7a004b000000000800801900000000077a013f000005fa0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000060501000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000061d01000041000000c40010043f0000061e01000041000000e40010043f0000061c01000041000017c50001043017c316ce0000040f0000000001000019000017c40001042e000000040240008a000005fa03000041000000600620008c00000000060000190000000006034019000005fa02200197000000000702004b000000000300a019000005fa0220009c00000000020600190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000702043b000005fb0270009c0000010d0000213d00000004067000390000000002640049000005fa03000041000002600820008c00000000080000190000000008034019000005fa02200197000000000902004b000000000300a019000005fa0220009c00000000020800190000000002036019000000000202004b0000010d0000c13d0000000002000411000080010220008c000000430000c13d0000000002000412000005fc022001970000000003000410000000000232004b000000430000c13d0000012402700039000000000321034f0000004402700039000000000221034f000000000202043b000005fc02200197000000000303043b000005fd0830009c000001310000413d00000044015000390000060402000041000000000021043500000024015000390000000802000039000000000021043500000605010000410000000000150435000000040150003900000020020000390000000000210435000005f201000041000005f20250009c0000000001054019000000400110021000000606011001c7000017c50001043017c315d50000040f000000040240008a000005fa03000041000000600520008c00000000050000190000000005034019000005fa02200197000000000602004b000000000300a019000005fa0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000b00000002001d000005fb0220009c0000010d0000213d0000000b020000290000000402200039000a00000002001d0000000002240049000005fa03000041000002600420008c00000000040000190000000004034019000005fa02200197000000000502004b000000000300a019000005fa0220009c00000000020400190000000002036019000000000202004b0000010f0000613d0000000001000019000017c5000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d0000000001000412000005fc011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d00000020031000390000061f0400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b0000002404100039000000000034043500000024030000390000000000310435000006200310009c0000015e0000413d0000063d0100004100000000001004350000004101000039000000040010043f0000063e01000041000017c500010430000001c405700039000000000551034f0000000007740049000000230770008a000000000505043b000005fa08000041000000000975004b00000000090000190000000009088019000005fa07700197000005fa0a500197000000000b7a004b000000000800801900000000077a013f000005fa0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000006650019000000000161034f000000000501043b000005fb0150009c0000010d0000213d00000000015400490000002004600039000005fa06000041000000000714004b00000000070000190000000007062019000005fa01100197000005fa08400197000000000918004b0000000006008019000000000118013f000005fa0110009c00000000010700190000000001066019000000000101004b0000010d0000c13d0000000001000414000005fe0610009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f0000000004010433000005fe0540009c000001740000413d00000605020000410000000000230435000000a40210003900000604040000410000000000420435000000840210003900000008040000390000000000420435000000640110003900000020020000390000000000210435000005f201000041000005f20230009c0000000001034019000000400110021000000606011001c7000017c500010430000000c0022002100000062102200197000000400110021000000622011000410000062301100197000000000112019f00000060024002100000062402200197000000000121019f00000625011001c70000800302000039000000000300001900000000040000190000000005000019000000000600001917c317af0000040f00030000000103550000006001100270000105f20010019d000005f2041001970000003f014000390000062605100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000005fb0630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001022001900000025b0000613d0000000901000029000000000101004b000012520000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b0000028f0000c13d0000000702000029000000000121034f000000000101043b000000800210008c000002cf0000413d00000080021002700000062c0310009c000000000201a0190000062c0310009c0000000003000019000000100300203900000008043001bf000005fb0520009c00000000030420190000004004200270000005fb0520009c000000000204201900000004043001bf000005f20520009c00000000030420190000002004200270000005f20520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b000002e60000613d00000000040304330000062b04400197000000f805200210000000000445019f0000062d0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000090200002900000021022000390000000000120435000004260000013d000000000441034f000000000404043b000005ff04400197000006070740009c000002650000c13d000000430460008c000002710000213d0000060501000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000061a01000041000000c40010043f0000061b01000041000000e40010043f0000061c01000041000017c500010430000080060620008c00000000060000190000024a0000c13d000000040650008c00000000060000190000024a0000413d00000001060000390000000207400367000000000707043b000005ff07700197000006000870009c000002490000613d000006010870009c000002490000613d000006020870009c000002490000613d000006030670009c00000000060000190000000106006039000000010660018f17c316d80000040f17c317230000040f0000000002010019000000400100043d000b00000001001d17c315bf0000040f0000000b040000290000000001410049000005f202000041000005f20310009c0000000001028019000005f20340009c000000000204401900000040022002100000006001100210000000000121019f000017c40001042e0000000001010433000005f202000041000005f20410009c0000000001028019000005f20430009c000000000203401900000040022002100000006001100210000000000121019f000017c500010430000006080140009c000000430000613d0000060501000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000060901000041000000c40010043f0000060a01000041000017c5000104300000002404500039000000000441034f000000000404043b000b00000004001d000005fc0440009c0000010d0000213d000000e402200039000000000221034f0000004404500039000000000141034f000000000101043b000a00000001001d000000000102043b0000060b02000041000000800020043f000005fc02300197000800000002001d000000840020043f000005fc01100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c000003480000c13d0000000103000031000000200130008c00000020040000390000000004034019000003740000013d000000710320008c000002ec0000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d0000000004420019000005fa05000041000000000643004b00000000060000190000000006058019000005fa04400197000005fa07300197000000000847004b0000000005008019000000000447013f000005fa0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000003430019000000000131034f000000000101043b000005fb0410009c0000010d0000213d00000000021200490000002003300039000005fa04000041000000000523004b00000000050000190000000005042019000005fa02200197000005fa06300197000000000726004b0000000004008019000000000226013f000005fa0220009c00000000020500190000000002046019000000000202004b0000010d0000c13d00000000020004140000000004310019000000000114004b00000000010000190000000101004039000005f2033001970000000101100190000002c90000c13d0000000001000031000000000541004b000007130000813d0000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000000400200043d000900000002001d0000062a0220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000002db0000413d00000009030000290000000003030433000000000303004b0000041d0000c13d0000063d0100004100000000001004350000003201000039000000040010043f0000063e01000041000017c500010430000000020120008c0000039b0000c13d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005580000413d00000080012002700000062c0320009c000000000102a0190000062c0320009c0000000003000019000000100300203900000008043001bf000005fb0510009c00000000030420190000004004100270000005fb0510009c000000000104201900000004043001bf000005f20510009c00000000030420190000002004100270000005f20510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003350000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000032d0000413d000000000500004b000003370000613d0000000005010433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000005750000013d000005f202000041000005f20310009c0000000001028019000000c0011002100000060c011001c70000000b0200002917c317b40000040f00000000030100190000006003300270000005f203300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003610000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003590000413d000000000705004b000003700000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000003f70000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000060d030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000060e05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c000004f70000c13d00000001020000390000000101000031000005080000013d000000010120008c000004770000c13d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005ea0000413d00000080012002700000062c0320009c000000000102a0190000062c0320009c0000000003000019000000100300203900000008043001bf000005fb0510009c00000000030420190000004004100270000005fb0510009c000000000104201900000004043001bf000005f20510009c00000000030420190000002004100270000005f20510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003e40000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003dc0000413d000000000500004b000003e60000613d0000000005010433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000006070000013d000000400200043d0000001f0430018f0000000503300272000004040000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003fc0000413d000000000504004b000004130000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f2010000410000000103000031000005f20430009c0000000003018019000005f20420009c000000000102401900000040011002100000006002300210000000000112019f000017c500010430000000f803100210000005fa04000041000000000101004b0000000001030019000000000104601900000000030204330000062b03300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c000004890000413d00000080012002700000062c0320009c000000000102a0190000062c0320009c0000000003000019000000100300203900000008043001bf000005fb0510009c00000000030420190000004004100270000005fb0510009c000000000104201900000004043001bf000005f20510009c00000000030420190000002004100270000005f20510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004640000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000045c0000413d000000000500004b000004660000613d0000000005010433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000004a60000013d000000400100043d00000044021000390000062703000041000000000032043500000024021000390000001703000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400100043d0000062a0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004930000413d0000000004010433000000000404004b000002e60000613d000000f804200210000005fa05000041000000000202004b0000000002040019000000000205601900000000040304330000062b04400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c000006570000413d00000080023002700000062c0430009c000000000203a0190000062c0430009c0000000004000019000000100400203900000008054001bf000005fb0620009c00000000040520190000004005200270000005fb0620009c000000000205201900000004054001bf000005f20620009c00000000040520190000002005200270000005f20620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fb0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000004e40000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000004dc0000413d000000000600004b000004e60000613d0000000006020433000000000606004b000002e60000613d00000000060504330000062b06600197000000f807400210000000000667019f0000062d0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006740000013d000005f204000041000005f20530009c000000000304801900000060033002100000004002200210000000000223019f000005f20310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c317af0000040f000000010220018f00030000000103550000006001100270000105f20010019d000005f2011001970000006003000039000700000003001d000000000301004b000005280000c13d00000007010000290000000031010434000300000003001d000000000202004b000005c50000c13d000000000201004b000007080000c13d000000400300043d000b00000003001d000006050100004100000000001304350000000401300039000000060200002900000000002104350000002402300039000000050100002917c315ac0000040f0000000b040000290000000001410049000005f202000041000005f20310009c0000000001028019000005f20340009c000000000204401900000040022002100000006001100210000000000121019f000017c500010430000005fb0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000005480000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005400000413d000000000604004b0000050c0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000050c0000013d000000400100043d0000062a0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005620000413d0000000004010433000000000404004b000002e60000613d000000f804200210000005fa05000041000000000202004b0000000002040019000000000205601900000000040304330000062b04400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000007280000413d00000080023002700000062c0430009c000000000203a0190000062c0430009c0000000004000019000000100400203900000008054001bf000005fb0620009c00000000040520190000004005200270000005fb0620009c000000000205201900000004054001bf000005f20620009c00000000040520190000002005200270000005f20620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fb0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005b20000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005aa0000413d000000000600004b000005b40000613d0000000006020433000000000606004b000002e60000613d00000000060504330000062b06600197000000f807400210000000000667019f0000062d0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000007450000013d000000000201004b000009f20000c13d0000060f0100004100000000001004390000000b010000290000000400100443000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000610011001c7000080020200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000000000101004b000009ee0000c13d000000400100043d00000044021000390000061903000041000000000032043500000024021000390000001d03000039000000000032043500000605020000410000000000210435000000040210003900000006030000290000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400100043d0000062a0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005f40000413d0000000004010433000000000404004b000002e60000613d000000f804200210000005fa05000041000000000202004b0000000002040019000000000205601900000000040304330000062b04400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c000007960000413d00000080032002700000062c0420009c000000000302a0190000062c0420009c0000000004000019000000100400203900000008054001bf000005fb0630009c00000000040520190000004005300270000005fb0630009c000000000305201900000004054001bf000005f20630009c00000000040520190000002005300270000005f20630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000005fb0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006440000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000063c0000413d000000000600004b000006460000613d0000000006030433000000000606004b000002e60000613d00000000060504330000062b06600197000000f807400210000000000667019f0000062d0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000007b30000013d000000400200043d0000062a0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006610000413d0000000005020433000000000505004b000002e60000613d000000f805300210000005fa06000041000000000303004b0000000003050019000000000306601900000000050404330000062b05500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006820000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b0000067b0000413d000000000143001900000000000104350000000004020433000000000504004b0000068f0000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b000006880000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000005fb0220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f0000062a0110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000062e0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000b8d0000413d00000080021002700000062c0310009c000000000201a0190000062c0310009c0000000003000019000000100300203900000008043001bf000005fb0520009c00000000030420190000004004200270000005fb0520009c000000000204201900000004043001bf000005f20520009c00000000030420190000002004200270000005f20520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000006f30000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000006eb0000413d000000000400004b000006f50000613d00000005040000290000000004040433000000000404004b000002e60000613d00000000040304330000062b04400197000000f805200210000000000445019f0000062d0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000bad0000013d000005f2020000410000000304000029000005f20340009c00000000030200190000000003044019000005f20410009c000000000102801900000060011002100000004002300210000000000121019f000017c5000104300000000203300367000005fe0520009c000008040000413d000000400100043d00000044021000390000060403000041000000000032043500000024021000390000000803000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400200043d0000062a0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007320000413d0000000005020433000000000505004b000002e60000613d000000f805300210000005fa06000041000000000303004b0000000003050019000000000306601900000000050404330000062b05500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a2f0000413d00000080043002700000062c0530009c000000000403a0190000062c0530009c0000000005000019000000100500203900000008065001bf000005fb0740009c00000000050620190000004006400270000005fb0740009c000000000406201900000004065001bf000005f20740009c00000000050620190000002006400270000005f20740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fb0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007830000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b0000077b0000413d000000000700004b000007850000613d0000000007040433000000000707004b000002e60000613d00000000070604330000062b07700197000000f808500210000000000778019f0000062d0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000a4c0000013d000000400300043d0000062a0430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007a00000413d0000000005030433000000000505004b000002e60000613d000000f805200210000005fa06000041000000000202004b0000000002050019000000000206601900000000050404330000062b05500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b1f0000413d00000080042002700000062c0520009c000000000402a0190000062c0520009c0000000005000019000000100500203900000008065001bf000005fb0740009c00000000050620190000004006400270000005fb0740009c000000000406201900000004065001bf000005f20740009c00000000050620190000002006400270000005f20740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fb0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007f10000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000007e90000413d000000000700004b000007f30000613d0000000007040433000000000707004b000002e60000613d00000000070604330000062b07700197000000f808500210000000000778019f0000062d0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b3c0000013d0000000001410049000005f20110019700000000011303df000000c002200210000006210220019700000633022001c700000000012103af000080100200003917c317be0000040f00000000030100190000006003300270000105f20030019d000005f2033001970003000000010355000000010220019000000a9d0000613d0000003f013000390000062601100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fb0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f0430003900000005044002720000082f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000008270000413d000000000400004b000008310000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008410000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008390000413d000000000604004b000008500000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ca40000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b000005fa06000041000000000753004b00000000070000190000000007068019000005fa05500197000005fa08300197000000000958004b0000000006008019000000000558013f000005fa0550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000005fb0350009c0000010d0000213d000000050350021000000000043400490000002006100039000005fa01000041000000000746004b00000000070000190000000007012019000005fa04400197000005fa08600197000000000948004b0000000001008019000000000448013f000005fa0440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d000000200410003900000634055001980000088f0000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000008870000413d000000000200004b000008910000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000005fb0520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f000005f202000041000005f20340009c0000000003020019000000000304401900000040033002100000000001010433000005f20410009c00000000010280190000006001100210000000000131019f0000000003000414000005f20430009c0000000002034019000000c002200210000000000112019f00000632011001c7000080100200003917c317b40000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b000005fa06000041000000000754004b00000000070000190000000007068019000005fa05500197000005fa08400197000000000958004b0000000006008019000000000558013f000005fa0550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000004140019000000000143034f000000000101043b000005fb0310009c0000010d0000213d00000000021200490000002003400039000005fa04000041000000000523004b00000000050000190000000005042019000005fa02200197000005fa06300197000000000726004b0000000004008019000000000226013f000005fa0220009c00000000020500190000000002046019000000000202004b0000010d0000c13d0000000002000414000000000131001a000005f204300197000002c90000413d0000000003000031000000000513004b000002c90000413d0000000204400367000005f20520009c000007160000213d0000000001130049000005f20110019700000000011403df000000c002200210000006210220019700000633022001c700000000012103af000080100200003917c317be0000040f00000000030100190000006003300270000105f20030019d000005f20330019700030000000103550000000102200190000013fa0000613d0000003f013000390000062601100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fb0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000009150000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000090d0000413d000000000400004b000009170000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000009270000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b0000091f0000413d000000000604004b000009360000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ca40000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000636030000410000000000320435000001c0030000390000000000310435000006370310009c0000012b0000213d000001e003100039000000400030043f000005f203000041000005f20420009c000000000203801900000040022002100000000001010433000005f20410009c00000000010380190000006001100210000000000121019f0000000002000414000005f20420009c0000000002038019000000c002200210000000000112019f00000632011001c7000080100200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b000006380300004100000000003204350000008003400039000000000013043500000060014000390000063903000041000000000031043500000040014000390000063a030000410000000000310435000000800100003900000000001404350000063b0140009c0000012b0000213d0000000904000029000000a001400039000000400010043f000005f201000041000005f20320009c000000000201801900000040022002100000000003040433000005f20430009c00000000030180190000006003300210000000000223019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f00000001022001900000010d0000613d000000000301043b000000400100043d00000042021000390000000704000029000000000042043500000020021000390000063c0400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006150310009c0000012b0000213d0000008003100039000000400030043f000005f203000041000005f20420009c000000000203801900000040022002100000000001010433000005f20410009c00000000010380190000006001100210000000000121019f0000000002000414000005f20420009c0000000002038019000000c002200210000000000112019f00000632011001c7000080100200003917c317b40000040f0000000101200190000012520000c13d0000010d0000013d00000007010000290000000001010433000000000201004b00000a1c0000613d000005fa02000041000000200310008c00000000030000190000000003024019000005fa01100197000000000401004b000000000200a019000005fa0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a1c0000c13d000000400100043d00000064021000390000061703000041000000000032043500000044021000390000061803000041000000000032043500000024021000390000002a03000039000000000032043500000605020000410000000000210435000000040210003900000006030000290000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c500010430000000400300043d0000002401300039000000090200002900000000002104350000060b010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000ab80000c13d0000000103000031000000200130008c0000002004000039000000000403401900000aeb0000013d000000400400043d0000062a0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000a390000413d0000000006040433000000000606004b000002e60000613d000000f806300210000005fa07000041000000000303004b0000000003060019000000000307601900000000060504330000062b06600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c220000413d00000080053002700000062c0630009c000000000503a0190000062c0630009c0000000006000019000000100600203900000008076001bf000005fb0850009c00000000060720190000004007500270000005fb0850009c000000000507201900000004076001bf000005f20850009c00000000060720190000002007500270000005f20850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fb0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000a8a0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000a820000413d000000000800004b00000a8c0000613d0000000008050433000000000808004b000002e60000613d00000000080704330000062b08800197000000f809600210000000000889019f0000062d0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000c3f0000013d0000001f0430018f000000050230027200000aa80000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000aa10000413d000000000504004b00000ab60000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c500010430000005f202000041000005f20310009c00000000010280190000000704000029000005f20340009c00000000020440190000004002200210000000c001100210000000000121019f00000611011001c70000000b0200002917c317b40000040f000000070a00002900000000030100190000006003300270000005f203300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000ad70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000acf0000413d000000000705004b00000ae70000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000bfc0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000005fb0410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000c900000c13d00000044021000390000000a03000029000000000032043500000020021000390000060d03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006150310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006160310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000060e040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000db20000c13d0000000102000039000000010100003100000dc50000013d000000400400043d0000062a0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b290000413d0000000006040433000000000606004b000002e60000613d000000f806200210000005fa07000041000000000202004b0000000002060019000000000207601900000000060504330000062b06600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000cb60000413d00000080052002700000062c0620009c000000000502a0190000062c0620009c0000000006000019000000100600203900000008076001bf000005fb0850009c00000000060720190000004007500270000005fb0850009c000000000507201900000004076001bf000005f20850009c00000000060720190000002007500270000005f20850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fb0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000b7a0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000b720000413d000000000800004b00000b7c0000613d0000000008050433000000000808004b000002e60000613d00000000080704330000062b08800197000000f809600210000000000889019f0000062d0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000cd30000013d000000400200043d000500000002001d0000062a0220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000b990000413d00000005030000290000000003030433000000000303004b000002e60000613d000000f803100210000005fa04000041000000000101004b0000000001030019000000000104601900000000030204330000062b03300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d0000000004430019000005fa05000041000000000641004b00000000060000190000000006058019000005fa04400197000005fa07100197000000000847004b0000000005008019000000000447013f000005fa0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000005fb0510009c0000010d0000213d00000000051300490000002003400039000005fa04000041000000000653004b00000000060000190000000006042019000005fa05500197000005fa07300197000000000857004b0000000004008019000000000557013f000005fa0550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000ee40000c13d000000000132034f000000000101043b000000010200008a000005fa03000041000000000221004b00000000020000190000000002032019000005fa01100197000005fa0410009c0000000003008019000005fa01100167000005fa0110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010420000c13d000000400100043d000400000001001d0000062a0110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000062d02000041000000000021043500000001010000390000000000130435000010420000013d000000400200043d0000001f0430018f000000050330027200000c090000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c010000413d000000000504004b00000c180000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f2010000410000000103000031000005f20430009c0000000003018019000005f20420009c000000000102401900000040011002100000006002300210000000000112019f000017c500010430000000400500043d0000062a0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c2c0000413d0000000007050433000000000707004b000002e60000613d000000f807300210000005fa08000041000000000303004b0000000003070019000000000308601900000000070604330000062b07700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d340000413d00000080063002700000062c0730009c000000000603a0190000062c0730009c0000000007000019000000100700203900000008087001bf000005fb0960009c00000000070820190000004008600270000005fb0960009c000000000608201900000004087001bf000005f20960009c00000000070820190000002008600270000005f20960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000005fb0a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000c7d0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000c750000413d000000000900004b00000c7f0000613d0000000009060433000000000909004b000002e60000613d00000000090804330000062b09900197000000f80a70021000000000099a019f0000062d0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000d510000013d00000064021000390000061203000041000000000032043500000044021000390000061303000041000000000032043500000024021000390000003603000039000000000032043500000605020000410000000000210435000000040210003900000006030000290000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c500010430000000400100043d00000044021000390000063503000041000000000032043500000024021000390000001f03000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400500043d0000062a0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000cc00000413d0000000007050433000000000707004b000002e60000613d000000f807200210000005fa08000041000000000202004b0000000002070019000000000208601900000000070604330000062b07700197000000000227019f0000000000260435000000400600043d0000062a0260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000062e0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e150000413d00000080072002700000062c0820009c000000000702a0190000062c0820009c0000000008000019000000100800203900000008098001bf000005fb0a70009c00000000080920190000004009700270000005fb0a70009c000000000709201900000004098001bf000005f20a70009c00000000080920190000002009700270000005f20a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000005fb0b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d210000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d190000413d000000000a00004b00000d230000613d000000000a070433000000000a0a004b000002e60000613d000000000a0904330000062b0aa00197000000f80b800210000000000aab019f0000062d0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e320000013d000000400600043d0000062a0760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d3e0000413d0000000008060433000000000808004b000002e60000613d000000f808300210000005fa09000041000000000303004b0000000003080019000000000309601900000000080704330000062b08800197000000000338019f0000000000370435000000400700043d0000062a0370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000062e090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f470000413d00000080083002700000062c0930009c000000000803a0190000062c0930009c00000000090000190000001009002039000000080a9001bf000005fb0b80009c00000000090a2019000000400a800270000005fb0b80009c00000000080a2019000000040a9001bf000005f20b80009c00000000090a2019000000200a800270000005f20b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000005fb0ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000d9f0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000d970000413d000000000b00004b00000da10000613d000000000b080433000000000b0b004b000002e60000613d000000000b0a04330000062b0bb00197000000f80c900210000000000bbc019f0000062d0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000f640000013d000005f204000041000005f20520009c00000000020480190000004002200210000005f20530009c00000000030480190000006003300210000000000223019f000005f20310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c317af0000040f000000010220018f00030000000103550000006001100270000105f20010019d000005f2011001970000006003000039000900000003001d000000000301004b00000de50000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f1a0000c13d000000000201004b000011110000c13d000000400300043d000b00000003001d0000060501000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a0100002917c315ac0000040f0000000b040000290000000001410049000005f202000041000005f20310009c0000000001028019000005f20340009c000000000204401900000040022002100000006001100210000000000121019f000017c500010430000005fb0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e050000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000dfd0000413d000000000604004b00000dc90000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000dc90000013d000000400700043d0000062a0870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e1f0000413d0000000009070433000000000909004b000002e60000613d000000f809200210000005fa0a000041000000000202004b000000000209001900000000020a601900000000090804330000062b09900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e3f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e380000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000e4e0000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e470000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000e5d0000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000e560000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000e6c0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000e650000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000e7b0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000e740000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000e8a0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000e830000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000005fb0450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000005fa0a000041000000000b96004b000000000b000019000000000b0a8019000005fa09900197000005fa0c600197000000000d9c004b000000000a00801900000000099c013f000005fa0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fb0a60009c0000010d0000213d000000000a6800490000002008900039000005fa09000041000000000ba8004b000000000b000019000000000b092019000005fa0aa00197000005fa0c800197000000000dac004b0000000009008019000000000aac013f000005fa0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012700000c13d000000000687034f000000000606043b000000010700008a000005fa08000041000000000776004b00000000070000190000000007082019000005fa06600197000005fa0960009c0000000008008019000005fa06600167000005fa0660009c00000000070860190000006006000039000000000707004b000012ee0000c13d0000062a0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062d070000410000000000760435000000010600003900000000006504350000000006050019000012ee0000013d000000380210008c000010250000413d0000002002100270000005f20310009c00000000030100190000000003022019000005f20210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d0000062a0440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f020000413d00000004040000290000000004040433000000000404004b000002e60000613d00000000040304330000062b04400197000000f805200210000000000445019f0000062f044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010420000013d000000000201004b00000f310000c13d0000060f0100004100000000001004390000000b010000290000000400100443000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000610011001c7000080020200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000000000101004b000005d80000613d00000009010000290000000001010433000000000201004b000000430000613d000005fa02000041000000200310008c00000000030000190000000003024019000005fa01100197000000000401004b000000000200a019000005fa0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a070000613d000000430000013d000000400800043d0000062a0980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000f510000413d000000000a080433000000000a0a004b000002e60000613d000000f80a300210000005fa0b000041000000000303004b00000000030a001900000000030b6019000000000a0904330000062b0aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000f710000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000f6a0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000f800000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000f790000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000f8f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000f880000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000f9e0000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000f970000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b00000fad0000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000fa60000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b00000fbc0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b00000fb50000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b00000fcb0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b00000fc40000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000005fb0450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000005fa0a000041000000000b96004b000000000b000019000000000b0a8019000005fa09900197000005fa0c600197000000000d9c004b000000000a00801900000000099c013f000005fa0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fb0a60009c0000010d0000213d000000000a6800490000002008900039000005fa09000041000000000ba8004b000000000b000019000000000b092019000005fa0aa00197000005fa0c800197000000000dac004b0000000009008019000000000aac013f000005fa0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012a20000c13d000000000687034f000000000606043b000000010700008a000005fa08000041000000000776004b00000000070000190000000007082019000005fa06600197000005fa0960009c0000000008008019000005fa06600167000005fa0660009c00000000070860190000006006000039000000000707004b000013810000c13d0000062a0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062d070000410000000000760435000000010600003900000000006504350000000006050019000013810000013d000000400200043d000400000002001d0000062a0220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010310000413d00000004030000290000000003030433000000000303004b000002e60000613d000000f80110021000000000030204330000062b03300197000000000113019f000005fa01100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b000010b70000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b000005fa04000041000000000659004b00000000060000190000000006048019000005fa05500197000005fa07900197000000000857004b0000000004008019000000000557013f000005fa0550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000005fb0a20009c0000010d0000213d00000000032300490000002009900039000005fa0a000041000000000b39004b000000000b000019000000000b0a2019000005fa03300197000005fa09900197000000000c39004b000000000a008019000000000339013f000005fa0330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d0000000003450019000000000363001900000000037300190000000003830019000000000223001900000000030104330000000002320019000005fb02200197000000380320008c000011590000413d0000002003200270000005f20420009c00000000040200190000000004032019000005f20320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d0000062a0560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010a10000413d0000000005060433000000000505004b000002e60000613d00000000050404330000062b05500197000000f807300210000000000557019f00000631055001c700000000005404350000000303300210000000f80330008900000000023201cf00000021036000390000000000230435000011730000013d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000111c0000413d00000080021002700000062c0310009c000000000201a0190000062c0310009c0000000003000019000000100300203900000008043001bf000005fb0520009c00000000030420190000004004200270000005fb0520009c000000000204201900000004043001bf000005f20520009c00000000030420190000002004200270000005f20520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000442043600000021053000390000000505500272000010fe0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000010f60000413d000000000500004b000011000000613d0000000005020433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c000000000100201900000021032000390000000000130435000011390000013d000005f2020000410000000804000029000005f20340009c00000000030200190000000003044019000005f20410009c000000000102801900000060011002100000004002300210000000000121019f000017c500010430000000400200043d0000062a0320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011260000413d0000000004020433000000000404004b000002e60000613d000000f804100210000005fa05000041000000000101004b0000000001040019000000000105601900000000040304330000062b04400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011460000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b0000113f0000413d00000000024300190000063f0400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000005fb0420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000104a0000013d000000400600043d0000062a0360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a000011630000413d0000000004060433000000000404004b000002e60000613d000000f80220021000000000040304330000062b04400197000000000242019f0000063002200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b000005fa07000041000000000854004b00000000080000190000000008078019000005fa05500197000005fa09400197000000000a59004b0000000007008019000000000559013f000005fa0550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000005fb0340009c0000010d0000213d00000000024200490000002005500039000005fa03000041000000000725004b00000000070000190000000007032019000005fa02200197000005fa08500197000000000928004b0000000003008019000000000228013f000005fa0220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000011ab0000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000011a40000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000011bc0000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011b40000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b000011cd0000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011c50000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b000011de0000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011d60000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b000011ef0000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011e70000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b000012000000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011f80000413d0000000008870019000000000008043500000000066700190000001f0740018f000000200860003900000002055003670000000509400272000012110000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012090000413d000000000a07004b000012200000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b0000122e0000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012270000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000005fb0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f000005f201000041000005f20430009c000000000301801900000040033002100000000002020433000005f20420009c00000000020180190000006002200210000000000232019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f00000001012001900000010d0000613d0000000a0100002917c3178d0000040f0000064002000041000000000020043900000008020000290000000400200443000900000001001d0000800a01000039000000240200003917c3159b0000040f0000000902000029000000000112004b0000000001000019000000010100a03917c316500000040f0000000b01000029000001e4021000390000000a0100002917c316680000040f000000000300003117c316940000040f0000064101000041000000400200043d0000000000120435000005f201000041000005f20320009c0000000001024019000000400110021000000642011001c7000017c40001042e000000380760008c000012d40000413d0000002007600270000005f20860009c00000000080600190000000008072019000005f20760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062a0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000128b0000413d0000000009050433000000000909004b000002e60000613d00000000090804330000062b09900197000000f80a70021000000000099a019f0000062f099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000012ee0000013d000000380760008c000013670000413d0000002007600270000005f20860009c00000000080600190000000008072019000005f20760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062a0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012bd0000413d0000000009050433000000000909004b000002e60000613d00000000090804330000062b09900197000000f80a70021000000000099a019f0000062f099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000013810000013d0000062a0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000012dd0000413d0000000008050433000000000808004b000002e60000613d000000f80660021000000000080704330000062b08800197000000000668019f000005fa0660016700000000006704350000000006050019000000400500043d0000062a0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012f80000413d0000000009050433000000000909004b000002e60000613d00000000090704330000062b0990019700000630099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000005fa0a000041000000000d9c004b000000000d000019000000000d0a8019000005fa09900197000005fa0ec00197000000000f9e004b000000000a00801900000000099e013f000005fa0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fb0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fa0d000041000000000e7c004b000000000e000019000000000e0d2019000005fa07700197000005fa0cc00197000000000f7c004b000000000d00801900000000077c013f000005fa0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fb09700197000000380790008c000014150000413d0000002007900270000005f20890009c000000000709a019000005f20890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062a0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013510000413d000000000b070433000000000b0b004b000002e60000613d000000000b0a04330000062b0bb00197000000f80c800210000000000bbc019f000006310bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf000000210970003900000000008904350000142e0000013d0000062a0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013700000413d0000000008050433000000000808004b000002e60000613d000000f80660021000000000080704330000062b08800197000000000668019f000005fa0660016700000000006704350000000006050019000000400500043d0000062a0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000138b0000413d0000000009050433000000000909004b000002e60000613d00000000090704330000062b0990019700000630099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000005fa0a000041000000000d9c004b000000000d000019000000000d0a8019000005fa09900197000005fa0ec00197000000000f9e004b000000000a00801900000000099e013f000005fa0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fb0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fa0d000041000000000e7c004b000000000e000019000000000e0d2019000005fa07700197000005fa0cc00197000000000f7c004b000000000d00801900000000077c013f000005fa0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fb09700197000000380790008c000014d80000413d0000002007900270000005f20890009c000000000709a019000005f20890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062a0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013e40000413d000000000b070433000000000b0b004b000002e60000613d000000000b0a04330000062b0bb00197000000f80c800210000000000bbc019f000006310bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014f10000013d0000001f0430018f0000000502300272000014050000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000013fe0000413d000000000504004b000014130000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c500010430000000400700043d0000062a0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a0000141e0000413d000000000a070433000000000a0a004b000002e60000613d000000f809900210000000000a0804330000062b0aa001970000000009a9019f00000630099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000005fa0a000041000000000b83004b000000000b000019000000000b0a8019000005fa08800197000005fa0c300197000000000d8c004b000000000a00801900000000088c013f000005fa0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000005fb0480009c0000010d0000213d00000000048900490000002009300039000005fa03000041000000000a49004b000000000a000019000000000a032019000005fa04400197000005fa0b900197000000000c4b004b000000000300801900000000044b013f000005fa0440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006250a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b000014660000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b0000145f0000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b000014750000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b0000146e0000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b000014840000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b0000147d0000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a800272000014950000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b0000148d0000413d000000000b06004b000014a40000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000014b20000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000014ab0000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000005fb0510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000005f201000041000005f20240009c0000000002010019000000000204401900000040022002100000000003030433000005f20430009c00000000030180190000006003300210000000000223019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f0000000101200190000012520000c13d0000010d0000013d000000400700043d0000062a0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014e10000413d000000000a070433000000000a0a004b000002e60000613d000000f809900210000000000a0804330000062b0aa001970000000009a9019f00000630099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000005fa0a000041000000000b82004b000000000b000019000000000b0a8019000005fa08800197000005fa0c200197000000000d8c004b000000000a00801900000000088c013f000005fa0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000005fb0480009c0000010d0000213d00000000048900490000002009200039000005fa02000041000000000a49004b000000000a000019000000000a022019000005fa04400197000005fa0b900197000000000c4b004b000000000200801900000000044b013f000005fa0440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d0000002004200039000006320a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b000015290000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000015220000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b000015380000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b000015310000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000015470000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000015400000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000015580000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000015500000413d000000000b06004b000015670000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b000015750000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b0000156e0000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000005fb0510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f000005f201000041000005f20340009c0000000003010019000000000304401900000040033002100000000002020433000005f20420009c00000000020180190000006002200210000000000232019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f0000000101200190000012520000c13d0000010d0000013d0000000003010019000005f2010000410000000004000414000005f20540009c0000000001044019000000c001100210000000600220021000000000011200190000064301100041000000000203001917c317b40000040f0000000102200190000015aa0000613d000000000101043b000000000001042d0000000001000019000017c50001043000000000030104330000000002320436000000000403004b000015b80000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000015b10000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000015ce0000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000015c70000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a0000000003100031000005fa010000410000005f0230008c00000000020000190000000002012019000005fa04300197000000000504004b0000000001008019000005fa0440009c000000000102c019000000000101004b0000161b0000613d00000002010003670000004402100370000000000202043b000005fb0420009c0000161b0000213d0000000003230049000005fa04000041000002600530008c00000000050000190000000005044019000005fa03300197000000000603004b000000000400a019000005fa0330009c00000000030500190000000003046019000000000303004b0000161b0000c13d0000000003000411000080010330008c000016190000c13d0000000003000412000005fc033001970000000004000410000000000343004b000016190000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b0000161d0000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d000005f202000041000005f20310009c0000000001028019000000c001100210000080010200003917c317af0000040f000000010300002900030000000103550000006001100270000105f20010019d000000200130011a00000001012001950000000101200190000016350000613d0000000001000019000017c40001042e0000000001000019000017c50001043000000000431200a900000000422300d9000000000112004b0000164a0000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b0000160a0000613d000005f202000041000005f20410009c0000000001028019000000c00110021000000632011001c700008009020000390000800104000039000000000500001917c317af0000040f0000000003000415000000020330008a00000020033000c9000016120000013d000000400100043d00000064021000390000064403000041000000000032043500000044021000390000064503000041000000000032043500000024021000390000002503000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c5000104300000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000000000101004b000016530000613d000000000001042d000000400100043d00000064021000390000064603000041000000000032043500000044021000390000064703000041000000000032043500000024021000390000002203000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c500010430000000000300003100000000041300490000001f0540008a0000000204000367000000000224034f000000000202043b000005fa06000041000000000752004b00000000070000190000000007064019000005fa05500197000005fa08200197000000000958004b000000000600a019000000000558013f000005fa0550009c00000000050700190000000005066019000000000505004b000016920000613d0000000001120019000000000214034f000000000202043b000005fb0420009c000016920000213d00000000032300490000002001100039000005fa04000041000000000531004b00000000050000190000000005042019000005fa03300197000005fa06100197000000000736004b0000000004008019000000000336013f000005fa0330009c00000000030500190000000003046019000000000303004b000016920000c13d000000000001042d0000000001000019000017c500010430000006480420009c000016c60000813d0000003f04200039000000200500008a000000000554016f000000400400043d0000000005540019000000000645004b00000000060000190000000106004039000005fb0750009c000016c60000213d0000000106600190000016c60000c13d000000400050043f00000000042404360000000005120019000000000335004b000016cc0000213d0000001f0320018f00000002011003670000000505200272000016b40000613d000000000600001900000005076002100000000008740019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000016ac0000413d000000000603004b000016c30000613d0000000505500210000000000151034f00000000055400190000000303300210000000000605043300000000063601cf000000000636022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000000012400190000000000010435000000000001042d0000063d0100004100000000001004350000004101000039000000040010043f0000063e01000041000017c5000104300000000001000019000017c5000104300000000001000411000080010110008c000016d20000613d000000000001042d0000063d0100004100000000001004350000000101000039000000040010043f0000063e01000041000017c50001043000000000070200190000000008450019000005f2024001970000000202200367000000000403004b000016f40000613d000000000458004b0000170b0000413d0000000004000031000000000584004b0000170b0000413d000005fe0510009c000017110000813d0000000004840049000005f20440019700000000024203df000000c001100210000006210110019700000649011001c700000000011203af000000000206004b0000000005000019000000010500c03900008009020000390000000004070019000000000600001917c317b90000040f000017060000013d000000000358004b0000170b0000413d0000000003000031000000000483004b0000170b0000413d00000649040000410000063305000041000000000606004b0000000004056019000000c0011002100000062101100197000000000114019f0000000003830049000005f20330019700000000023203df00000000011203af000000000207001917c317b90000040f00030000000103550000006001100270000105f20010019d000000010120018f000000000001042d0000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000000400100043d00000044021000390000060403000041000000000032043500000024021000390000000803000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c5000104300000000102000031000000000101004b0000176c0000613d000006480120009c000017660000813d0000003f01200039000000200300008a000000000331016f000000400100043d0000000003310019000000000413004b00000000040000190000000104004039000005fb0530009c000017660000213d0000000104400190000017660000c13d000000400030043f00000000032104360000001f042000390000000504400272000017440000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000173c0000413d000000000400004b000017460000613d0000000104000031000000000442004b0000178b0000213d00000003050003670000001f0420018f0000000502200272000017560000613d000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000726004b0000174e0000413d000000000604004b000017650000613d0000000502200210000000000525034f00000000022300190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d0000063d0100004100000000001004350000004101000039000000040010043f0000063e01000041000017c50001043000000003010003670000001f0420018f0000000503200272000017780000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000635004b000017710000413d000000000504004b000017860000613d00000003044002100000000503300210000000000503043300000000054501cf000000000545022f000000000131034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f201000041000005f20320009c00000000010240190000006001100210000017c5000104300000000001000019000017c500010430000000e0031000390000000202000367000000000332034f000000000303043b000005fc03300198000017970000613d0000012001100039000000000112034f000000000101043b000017a80000013d000000a003100039000000000332034f0000006004100039000000000442034f000000000404043b000000000503043b00000000634500a9000000000605004b000017a30000613d00000000655300d9000000000445004b000017a90000c13d0000012001100039000000000112034f000000000101043b000000000131001a000017a90000413d000000000001042d0000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000017b2002104210000000102000039000000000001042d0000000002000019000000000001042d000017b7002104230000000102000039000000000001042d0000000002000019000000000001042d000017bc002104210000000102000039000000000001042d0000000002000019000000000001042d000017c1002104230000000102000039000000000001042d0000000002000019000000000001042d000017c300000432000017c40001042e000017c5000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f19010000000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39202bcce700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000002000000000000000000000000000000000000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f706575650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c000000000000000000000000000000000000000000000001000000000000000001000001000000000000000000000000000000000000000000000000000000008f19edac323ff4d08b76da2079015d4dfbe240eda064363680b7748cc46bf8dd", + "deployedBytecode": "0x0004000000000002000b00000000000200000000030100190000006003300270000005f20430019700030000004103550002000000010355000005f20030019d000100000000001f0000008005000039000000400050043f0000000101200190000000390000c13d0000000004000031000000040140008c000000410000413d0000000201000367000000000201043b000000e002200270000005f40320009c000000450000a13d000005f50320009c000000a90000613d000005f60320009c000000ea0000613d000005f70220009c000000a60000c13d000000040240008a000005fa03000041000000200420008c00000000040000190000000004034019000005fa05200197000000000605004b000000000300a019000005fa0550009c000000000304c019000000000303004b0000010d0000c13d0000000401100370000000000101043b000005fb0310009c0000010d0000213d0000000001120049000005fa02000041000002600310008c00000000030000190000000003024019000005fa01100197000000000401004b000000000200a019000005fa0110009c00000000010300190000000001026019000000000101004b000000430000613d0000010d0000013d0000000001000416000000000101004b0000010d0000c13d000000200100003900000100001004430000012000000443000005f301000041000017c40001042e000000000104004b000000a60000c13d0000000001000019000017c40001042e000005f80320009c000000eb0000613d000005f90220009c000000a60000c13d000000040240008a000005fa03000041000000600520008c00000000050000190000000005034019000005fa02200197000000000602004b000000000300a019000005fa0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000005fb0320009c0000010d0000213d00000004052000390000000003540049000005fa06000041000002600730008c00000000070000190000000007064019000005fa03300197000000000803004b000000000600a019000005fa0330009c00000000030700190000000003066019000000000303004b0000010d0000c13d0000000003000411000080010330008c000000430000c13d0000000003000412000005fc063001970000000003000410000000000636004b000000430000c13d0000022406200039000000000661034f0000000007240049000000230770008a000000000606043b000005fa08000041000000000976004b00000000090000190000000009088019000005fa07700197000005fa0a600197000000000b7a004b000000000800801900000000077a013f000005fa0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000005560019000000000651034f000000000606043b000005fb0760009c0000010d0000213d00000000076400490000002004500039000005fa08000041000000000974004b00000000090000190000000009082019000005fa07700197000005fa0a400197000000000b7a004b000000000800801900000000077a013f000005fa0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d000000030760008c000002230000213d0000060501000041000000800010043f0000002001000039000000840010043f0000003a01000039000000a40010043f0000061d01000041000000c40010043f0000061e01000041000000e40010043f0000061c01000041000017c50001043017c316ce0000040f0000000001000019000017c40001042e000000040240008a000005fa03000041000000600620008c00000000060000190000000006034019000005fa02200197000000000702004b000000000300a019000005fa0220009c00000000020600190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000702043b000005fb0270009c0000010d0000213d00000004067000390000000002640049000005fa03000041000002600820008c00000000080000190000000008034019000005fa02200197000000000902004b000000000300a019000005fa0220009c00000000020800190000000002036019000000000202004b0000010d0000c13d0000000002000411000080010220008c000000430000c13d0000000002000412000005fc022001970000000003000410000000000232004b000000430000c13d0000012402700039000000000321034f0000004402700039000000000221034f000000000202043b000005fc02200197000000000303043b000005fd0830009c000001310000413d00000044015000390000060402000041000000000021043500000024015000390000000802000039000000000021043500000605010000410000000000150435000000040150003900000020020000390000000000210435000005f201000041000005f20250009c0000000001054019000000400110021000000606011001c7000017c50001043017c315d50000040f000000040240008a000005fa03000041000000600520008c00000000050000190000000005034019000005fa02200197000000000602004b000000000300a019000005fa0220009c00000000020500190000000002036019000000000202004b0000010d0000c13d0000004402100370000000000202043b000b00000002001d000005fb0220009c0000010d0000213d0000000b020000290000000402200039000a00000002001d0000000002240049000005fa03000041000002600420008c00000000040000190000000004034019000005fa02200197000000000502004b000000000300a019000005fa0220009c00000000020400190000000002036019000000000202004b0000010f0000613d0000000001000019000017c5000104300000002401100370000000000101043b000900000001001d0000000001000411000080010110008c000000430000c13d0000000001000412000005fc011001970000000002000410000800000002001d000000000121004b000000430000c13d0000000002000414000000400100043d00000020031000390000061f0400004100000000004304350000000b030000290000010403300039000700000003001d0000000203300367000000000303043b0000002404100039000000000034043500000024030000390000000000310435000006200310009c0000015e0000413d0000063d0100004100000000001004350000004101000039000000040010043f0000063e01000041000017c500010430000001c405700039000000000551034f0000000007740049000000230770008a000000000505043b000005fa08000041000000000975004b00000000090000190000000009088019000005fa07700197000005fa0a500197000000000b7a004b000000000800801900000000077a013f000005fa0770009c00000000070900190000000007086019000000000707004b0000010d0000c13d0000000006650019000000000161034f000000000501043b000005fb0150009c0000010d0000213d00000000015400490000002004600039000005fa06000041000000000714004b00000000070000190000000007062019000005fa01100197000005fa08400197000000000918004b0000000006008019000000000118013f000005fa0110009c00000000010700190000000001066019000000000101004b0000010d0000c13d0000000001000414000005fe0610009c000002360000413d000000400500043d000000d90000013d0000006003100039000000400030043f0000000004010433000005fe0540009c000001740000413d00000605020000410000000000230435000000a40210003900000604040000410000000000420435000000840210003900000008040000390000000000420435000000640110003900000020020000390000000000210435000005f201000041000005f20230009c0000000001034019000000400110021000000606011001c7000017c500010430000000c0022002100000062102200197000000400110021000000622011000410000062301100197000000000112019f00000060024002100000062402200197000000000121019f00000625011001c70000800302000039000000000300001900000000040000190000000005000019000000000600001917c317af0000040f00030000000103550000006001100270000105f20010019d000005f2041001970000003f014000390000062605100197000000400100043d0000000003150019000000000553004b00000000050000190000000105004039000005fb0630009c0000012b0000213d00000001055001900000012b0000c13d000000400030043f00000000034104360000001f054000390000000505500272000001a30000613d00000000060000310000000206600367000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000019b0000413d000000000500004b000001a50000613d0000000105000031000000000554004b0000010d0000213d00000003060003670000001f0540018f0000000504400272000001b50000613d000000000700001900000005087002100000000009830019000000000886034f000000000808043b00000000008904350000000107700039000000000847004b000001ad0000413d000000000705004b000001c40000613d0000000504400210000000000646034f00000000044300190000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f000000000054043500000001022001900000025b0000613d0000000901000029000000000101004b000012520000c13d00000002010003670000000a02000029000000000221034f000000000202043b000000000302004b0000028f0000c13d0000000702000029000000000121034f000000000101043b000000800210008c000002cf0000413d00000080021002700000062c0310009c000000000201a0190000062c0310009c0000000003000019000000100300203900000008043001bf000005fb0520009c00000000030420190000004004200270000005fb0520009c000000000204201900000004043001bf000005f20520009c00000000030420190000002004200270000005f20520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c000000000200001900000001020020390000000002230019000000200300008a0000004104200039000000000334016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f000000020320003900000009040000290000000003340436000000210420003900000005044002720000020e0000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000002060000413d000000000400004b000002100000613d00000009040000290000000004040433000000000404004b000002e60000613d00000000040304330000062b04400197000000f805200210000000000445019f0000062d0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c0000000001002019000000090200002900000021022000390000000000120435000004260000013d000000000441034f000000000404043b000005ff04400197000006070740009c000002650000c13d000000430460008c000002710000213d0000060501000041000000800010043f0000002001000039000000840010043f0000004001000039000000a40010043f0000061a01000041000000c40010043f0000061b01000041000000e40010043f0000061c01000041000017c500010430000080060620008c00000000060000190000024a0000c13d000000040650008c00000000060000190000024a0000413d00000001060000390000000207400367000000000707043b000005ff07700197000006000870009c000002490000613d000006010870009c000002490000613d000006020870009c000002490000613d000006030670009c00000000060000190000000106006039000000010660018f17c316d80000040f17c317230000040f0000000002010019000000400100043d000b00000001001d17c315bf0000040f0000000b040000290000000001410049000005f202000041000005f20310009c0000000001028019000005f20340009c000000000204401900000040022002100000006001100210000000000121019f000017c40001042e0000000001010433000005f202000041000005f20410009c0000000001028019000005f20430009c000000000203401900000040022002100000006001100210000000000121019f000017c500010430000006080140009c000000430000613d0000060501000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f0000060901000041000000c40010043f0000060a01000041000017c5000104300000002404500039000000000441034f000000000404043b000b00000004001d000005fc0440009c0000010d0000213d000000e402200039000000000221034f0000004404500039000000000141034f000000000101043b000a00000001001d000000000102043b0000060b02000041000000800020043f000005fc02300197000800000002001d000000840020043f000005fc01100197000900000001001d000000a40010043f00000000010004140000000b02000029000000040220008c000003480000c13d0000000103000031000000200130008c00000020040000390000000004034019000003740000013d000000710320008c000002ec0000c13d000000230200008a0000000b030000290000000004320049000001c402300039000000000221034f000000000302043b0000000002000031000900000004001d0000000004420019000005fa05000041000000000643004b00000000060000190000000006058019000005fa04400197000005fa07300197000000000847004b0000000005008019000000000447013f000005fa0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000003430019000000000131034f000000000101043b000005fb0410009c0000010d0000213d00000000021200490000002003300039000005fa04000041000000000523004b00000000050000190000000005042019000005fa02200197000005fa06300197000000000726004b0000000004008019000000000226013f000005fa0220009c00000000020500190000000002046019000000000202004b0000010d0000c13d00000000020004140000000004310019000000000114004b00000000010000190000000101004039000005f2033001970000000101100190000002c90000c13d0000000001000031000000000541004b000007130000813d0000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000000400200043d000900000002001d0000062a0220009c0000012b0000213d00000009030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000002db0000413d00000009030000290000000003030433000000000303004b0000041d0000c13d0000063d0100004100000000001004350000003201000039000000040010043f0000063e01000041000017c500010430000000020120008c0000039b0000c13d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005580000413d00000080012002700000062c0320009c000000000102a0190000062c0320009c0000000003000019000000100300203900000008043001bf000005fb0510009c00000000030420190000004004100270000005fb0510009c000000000104201900000004043001bf000005f20510009c00000000030420190000002004100270000005f20510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003350000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000032d0000413d000000000500004b000003370000613d0000000005010433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000005750000013d000005f202000041000005f20310009c0000000001028019000000c0011002100000060c011001c70000000b0200002917c317b40000040f00000000030100190000006003300270000005f203300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003610000613d00000000070000190000000508700210000000000981034f000000000909043b000000800880003900000000009804350000000107700039000000000867004b000003590000413d000000000705004b000003700000613d0000000506600210000000000761034f00000003055002100000008006600039000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000003f70000613d0000001f01400039000000600410018f00000080014001bf000000400010043f000000200230008c0000010d0000413d000000800200043d0000000a03000029000000000232004b000000430000813d000000a0024000390000060d030000410000000000320435000000a40340003900000009050000290000000000530435000000c40340003900000000000304350000004403000039000400000003001d00000000003104350000014003400039000000400030043f00000120034000390000060e05000041000000000053043500000100044001bf0000002003000039000600000003001d000500000004001d0000000000340435000000000301043300000000010004140000000b04000029000000040440008c000004f70000c13d00000001020000390000000101000031000005080000013d000000010120008c000004770000c13d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d000000000201043b000000800120008c000005ea0000413d00000080012002700000062c0320009c000000000102a0190000062c0320009c0000000003000019000000100300203900000008043001bf000005fb0510009c00000000030420190000004004100270000005fb0510009c000000000104201900000004043001bf000005f20510009c00000000030420190000002004100270000005f20510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000003e40000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000003dc0000413d000000000500004b000003e60000613d0000000005010433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000006070000013d000000400200043d0000001f0430018f0000000503300272000004040000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003fc0000413d000000000504004b000004130000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f2010000410000000103000031000005f20430009c0000000003018019000005f20420009c000000000102401900000040011002100000006002300210000000000112019f000017c500010430000000f803100210000005fa04000041000000000101004b0000000001030019000000000104601900000000030204330000062b03300197000000000113019f00000000001204350000000b01000029000000a4011000390000000201100367000000000201043b000000800120008c000004890000413d00000080012002700000062c0320009c000000000102a0190000062c0320009c0000000003000019000000100300203900000008043001bf000005fb0510009c00000000030420190000004004100270000005fb0510009c000000000104201900000004043001bf000005f20510009c00000000030420190000002004100270000005f20510009c000000000104201900000002043001bf0000ffff0510008c000000000304201900000010041002700000000001042019000000ff0110008c000000000100001900000001010020390000000003130019000000200100008a0000004104300039000000000414016f000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000441043600000021053000390000000505500272000004640000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b0000045c0000413d000000000500004b000004660000613d0000000005010433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000023201cf000000ff0330008c000000000200201900000021031000390000000000230435000004a60000013d000000400100043d00000044021000390000062703000041000000000032043500000024021000390000001703000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400100043d0000062a0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000004930000413d0000000004010433000000000404004b000002e60000613d000000f804200210000005fa05000041000000000202004b0000000002040019000000000205601900000000040304330000062b04400197000000000224019f00000000002304350000000b0200002900000064022000390000000202200367000000000302043b000000800230008c000006570000413d00000080023002700000062c0430009c000000000203a0190000062c0430009c0000000004000019000000100400203900000008054001bf000005fb0620009c00000000040520190000004005200270000005fb0620009c000000000205201900000004054001bf000005f20620009c00000000040520190000002005200270000005f20620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fb0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000004e40000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000004dc0000413d000000000600004b000004e60000613d0000000006020433000000000606004b000002e60000613d00000000060504330000062b06600197000000f807400210000000000667019f0000062d0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000006740000013d000005f204000041000005f20530009c000000000304801900000060033002100000004002200210000000000223019f000005f20310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c317af0000040f000000010220018f00030000000103550000006001100270000105f20010019d000005f2011001970000006003000039000700000003001d000000000301004b000005280000c13d00000007010000290000000031010434000300000003001d000000000202004b000005c50000c13d000000000201004b000007080000c13d000000400300043d000b00000003001d000006050100004100000000001304350000000401300039000000060200002900000000002104350000002402300039000000050100002917c315ac0000040f0000000b040000290000000001410049000005f202000041000005f20310009c0000000001028019000005f20340009c000000000204401900000040022002100000006001100210000000000121019f000017c500010430000005fb0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000005480000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005400000413d000000000604004b0000050c0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000050c0000013d000000400100043d0000062a0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005620000413d0000000004010433000000000404004b000002e60000613d000000f804200210000005fa05000041000000000202004b0000000002040019000000000205601900000000040304330000062b04400197000000000224019f000000000023043500000007020000290000000202200367000000000302043b000000800230008c000007280000413d00000080023002700000062c0430009c000000000203a0190000062c0430009c0000000004000019000000100400203900000008054001bf000005fb0620009c00000000040520190000004005200270000005fb0620009c000000000205201900000004054001bf000005f20620009c00000000040520190000002005200270000005f20620009c000000000205201900000002054001bf0000ffff0620008c000000000405201900000010052002700000000002052019000000ff0220008c000000000200001900000001020020390000000004240019000000200200008a0000004105400039000000000525016f000000400200043d0000000005520019000000000625004b00000000060000190000000106004039000005fb0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000552043600000021064000390000000506600272000005b20000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b000005aa0000413d000000000600004b000005b40000613d0000000006020433000000000606004b000002e60000613d00000000060504330000062b06600197000000f807400210000000000667019f0000062d0660004100000000006504350000000304400210000000f80440008900000000034301cf000000ff0440008c000000000300201900000021042000390000000000340435000007450000013d000000000201004b000009f20000c13d0000060f0100004100000000001004390000000b010000290000000400100443000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000610011001c7000080020200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000000000101004b000009ee0000c13d000000400100043d00000044021000390000061903000041000000000032043500000024021000390000001d03000039000000000032043500000605020000410000000000210435000000040210003900000006030000290000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400100043d0000062a0310009c0000012b0000213d0000004003100039000000400030043f0000000103000039000000000331043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000005f40000413d0000000004010433000000000404004b000002e60000613d000000f804200210000005fa05000041000000000202004b0000000002040019000000000205601900000000040304330000062b04400197000000000224019f000000000023043500000007020000290000000202200367000000000202043b000000800320008c000007960000413d00000080032002700000062c0420009c000000000302a0190000062c0420009c0000000004000019000000100400203900000008054001bf000005fb0630009c00000000040520190000004005300270000005fb0630009c000000000305201900000004054001bf000005f20630009c00000000040520190000002005300270000005f20630009c000000000305201900000002054001bf0000ffff0630008c000000000405201900000010053002700000000003052019000000ff0330008c000000000300001900000001030020390000000004340019000000200300008a0000004105400039000000000535016f000000400300043d0000000005530019000000000635004b00000000060000190000000106004039000005fb0750009c0000012b0000213d00000001066001900000012b0000c13d000000400050043f0000000205400039000000000553043600000021064000390000000506600272000006440000613d0000000007000031000000020770036700000000080000190000000509800210000000000a950019000000000997034f000000000909043b00000000009a04350000000108800039000000000968004b0000063c0000413d000000000600004b000006460000613d0000000006030433000000000606004b000002e60000613d00000000060504330000062b06600197000000f807400210000000000667019f0000062d0660004100000000006504350000000304400210000000f80440008900000000024201cf000000ff0440008c000000000200201900000021043000390000000000240435000007b30000013d000000400200043d0000062a0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000006610000413d0000000005020433000000000505004b000002e60000613d000000f805300210000005fa06000041000000000303004b0000000003050019000000000306601900000000050404330000062b05500197000000000335019f0000000000340435000000400300043d000700000003001d00000020043000390000000003010433000000000503004b000006820000613d000000000500001900000000064500190000002005500039000000000715001900000000070704330000000000760435000000000635004b0000067b0000413d000000000143001900000000000104350000000004020433000000000504004b0000068f0000613d000000000500001900000000061500190000002005500039000000000725001900000000070704330000000000760435000000000645004b000006880000413d000000000114001900000000000104350000000001340019000000070300002900000000001304350000003f01100039000000200200008a000300000002001d000000000121016f0000000002310019000000000112004b00000000010000190000000101004039000600000002001d000005fb0220009c0000012b0000213d00000001011001900000012b0000c13d0000000601000029000000400010043f0000062a0110009c0000012b0000213d0000000b0400002900000044014000390000000201100367000000000101043b00000006050000290000004002500039000000400020043f00000020025000390000062e0300004100000000003204350000001502000039000000000025043500000021025000390000006001100210000000000012043500000124014000390000000201100367000000000101043b000000800210008c00000b8d0000413d00000080021002700000062c0310009c000000000201a0190000062c0310009c0000000003000019000000100300203900000008043001bf000005fb0520009c00000000030420190000004004200270000005fb0520009c000000000204201900000004043001bf000005f20520009c00000000030420190000002004200270000005f20520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000223001900000041032000390000000304000029000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000002032000390000000504000029000000000334043600000021042000390000000504400272000006f30000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000006eb0000413d000000000400004b000006f50000613d00000005040000290000000004040433000000000404004b000002e60000613d00000000040304330000062b04400197000000f805200210000000000445019f0000062d0440004100000000004304350000000302200210000000f80220008900000000012101cf000000ff0220008c000000000100201900000005020000290000002102200039000000000012043500000bad0000013d000005f2020000410000000304000029000005f20340009c00000000030200190000000003044019000005f20410009c000000000102801900000060011002100000004002300210000000000121019f000017c5000104300000000203300367000005fe0520009c000008040000413d000000400100043d00000044021000390000060403000041000000000032043500000024021000390000000803000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400200043d0000062a0420009c0000012b0000213d0000004004200039000000400040043f0000000104000039000000000442043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007320000413d0000000005020433000000000505004b000002e60000613d000000f805300210000005fa06000041000000000303004b0000000003050019000000000306601900000000050404330000062b05500197000000000335019f00000000003404350000000b03000029000000c4033000390000000203300367000000000303043b000000800430008c00000a2f0000413d00000080043002700000062c0530009c000000000403a0190000062c0530009c0000000005000019000000100500203900000008065001bf000005fb0740009c00000000050620190000004006400270000005fb0740009c000000000406201900000004065001bf000005f20740009c00000000050620190000002006400270000005f20740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fb0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007830000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b0000077b0000413d000000000700004b000007850000613d0000000007040433000000000707004b000002e60000613d00000000070604330000062b07700197000000f808500210000000000778019f0000062d0770004100000000007604350000000305500210000000f80550008900000000035301cf000000ff0550008c00000000030020190000002105400039000000000035043500000a4c0000013d000000400300043d0000062a0430009c0000012b0000213d0000004004300039000000400040043f0000000104000039000000000443043600000000050000310000000205500367000000000600001900000005076002100000000008740019000000000775034f000000000707043b0000000000780435000000010660003a000007a00000413d0000000005030433000000000505004b000002e60000613d000000f805200210000005fa06000041000000000202004b0000000002050019000000000206601900000000050404330000062b05500197000000000225019f00000000002404350000000b02000029000000a4022000390000000202200367000000000202043b000000800420008c00000b1f0000413d00000080042002700000062c0520009c000000000402a0190000062c0520009c0000000005000019000000100500203900000008065001bf000005fb0740009c00000000050620190000004006400270000005fb0740009c000000000406201900000004065001bf000005f20740009c00000000050620190000002006400270000005f20740009c000000000406201900000002065001bf0000ffff0740008c000000000506201900000010064002700000000004062019000000ff0440008c000000000400001900000001040020390000000005450019000000200400008a0000004106500039000000000646016f000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000005fb0860009c0000012b0000213d00000001077001900000012b0000c13d000000400060043f0000000206500039000000000664043600000021075000390000000507700272000007f10000613d000000000800003100000002088003670000000009000019000000050a900210000000000ba60019000000000aa8034f000000000a0a043b0000000000ab04350000000109900039000000000a79004b000007e90000413d000000000700004b000007f30000613d0000000007040433000000000707004b000002e60000613d00000000070604330000062b07700197000000f808500210000000000778019f0000062d0770004100000000007604350000000305500210000000f80550008900000000025201cf000000ff0550008c00000000020020190000002105400039000000000025043500000b3c0000013d0000000001410049000005f20110019700000000011303df000000c002200210000006210220019700000633022001c700000000012103af000080100200003917c317be0000040f00000000030100190000006003300270000105f20030019d000005f2033001970003000000010355000000010220019000000a9d0000613d0000003f013000390000062601100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fb0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f0430003900000005044002720000082f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000008270000413d000000000400004b000008310000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000008410000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000008390000413d000000000604004b000008500000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ca40000c13d0000000004000031000000090200002900000000052400190000000b0200002900000204032000390000000202000367000000000332034f000000000303043b000005fa06000041000000000753004b00000000070000190000000007068019000005fa05500197000005fa08300197000000000958004b0000000006008019000000000558013f000005fa0550009c00000000050700190000000005066019000000000505004b0000010d0000c13d0000000001010433000600000001001d0000000a010000290000000001130019000000000312034f000000000503043b000005fb0350009c0000010d0000213d000000050350021000000000043400490000002006100039000005fa01000041000000000746004b00000000070000190000000007012019000005fa04400197000005fa08600197000000000948004b0000000001008019000000000448013f000005fa0440009c000000000107c019000000000101004b0000010d0000c13d000000400100043d000000200410003900000634055001980000088f0000613d000000000262034f000000000600001900000005076002100000000008740019000000000772034f000000000707043b00000000007804350000000106600039000000000756004b000008870000413d000000000200004b000008910000613d00000000003104350000003f02300039000000200300008a000000000232016f0000000002210019000000000312004b00000000030000190000000103004039000005fb0520009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f000005f202000041000005f20340009c0000000003020019000000000304401900000040033002100000000001010433000005f20410009c00000000010280190000006001100210000000000131019f0000000003000414000005f20430009c0000000002034019000000c002200210000000000112019f00000632011001c7000080100200003917c317b40000040f00000001022001900000010d0000613d0000000002000031000000090300002900000000053200190000000b0300002900000224043000390000000203000367000000000443034f000000000404043b000005fa06000041000000000754004b00000000070000190000000007068019000005fa05500197000005fa08400197000000000958004b0000000006008019000000000558013f000005fa0550009c00000000050700190000000005066019000000000101043b000900000001001d000000000105004b0000010d0000c13d0000000a010000290000000004140019000000000143034f000000000101043b000005fb0310009c0000010d0000213d00000000021200490000002003400039000005fa04000041000000000523004b00000000050000190000000005042019000005fa02200197000005fa06300197000000000726004b0000000004008019000000000226013f000005fa0220009c00000000020500190000000002046019000000000202004b0000010d0000c13d0000000002000414000000000131001a000005f204300197000002c90000413d0000000003000031000000000513004b000002c90000413d0000000204400367000005f20520009c000007160000213d0000000001130049000005f20110019700000000011403df000000c002200210000006210220019700000633022001c700000000012103af000080100200003917c317be0000040f00000000030100190000006003300270000105f20030019d000005f20330019700030000000103550000000102200190000013fa0000613d0000003f013000390000062601100197000000400200043d0000000001120019000000000421004b00000000040000190000000104004039000005fb0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f00000000013204360000001f043000390000000504400272000009150000613d00000000050000310000000205500367000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000090d0000413d000000000400004b000009170000613d0000000104000031000000000443004b0000010d0000213d00000003050003670000001f0430018f0000000503300272000009270000613d000000000600001900000005076002100000000008710019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b0000091f0000413d000000000604004b000009360000613d0000000503300210000000000535034f00000000033100190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000002020433000000200220008c00000ca40000c13d0000000b0a0000290000006402a000390000000203000367000000000523034f0000004402a00039000000000423034f0000002402a00039000000000623034f0000008402a00039000000a407a00039000000c408a00039000000e409a00039000001240aa00039000000000aa3034f000000070b000029000000000bb3034f000000000993034f000000000883034f000000000773034f000000000c23034f0000000a02000029000000000223034f000000000202043b000000000306043b000000000404043b000000000505043b00000000060c043b000000000707043b000000000808043b000000000909043b000000000b0b043b000000000a0a043b000000000c010433000000400100043d000001c00d1000390000000000cd0435000001a00c100039000000090d0000290000000000dc0435000001800c100039000000060d0000290000000000dc0435000001600c1000390000000000ac0435000001400a1000390000000000ba0435000001200a10003900000000009a043500000100091000390000000000890435000000e0081000390000000000780435000000c0071000390000000000670435000000a0061000390000000000560435000000800510003900000000004504350000006004100039000000000034043500000040031000390000000000230435000000200210003900000636030000410000000000320435000001c0030000390000000000310435000006370310009c0000012b0000213d000001e003100039000000400030043f000005f203000041000005f20420009c000000000203801900000040022002100000000001010433000005f20410009c00000000010380190000006001100210000000000121019f0000000002000414000005f20420009c0000000002038019000000c002200210000000000112019f00000632011001c7000080100200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000700000001001d000000400100043d000900000001001d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d00000009040000290000002002400039000000000101043b000006380300004100000000003204350000008003400039000000000013043500000060014000390000063903000041000000000031043500000040014000390000063a030000410000000000310435000000800100003900000000001404350000063b0140009c0000012b0000213d0000000904000029000000a001400039000000400010043f000005f201000041000005f20320009c000000000201801900000040022002100000000003040433000005f20430009c00000000030180190000006003300210000000000223019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f00000001022001900000010d0000613d000000000301043b000000400100043d00000042021000390000000704000029000000000042043500000020021000390000063c0400004100000000004204350000002204100039000000000034043500000042030000390000000000310435000006150310009c0000012b0000213d0000008003100039000000400030043f000005f203000041000005f20420009c000000000203801900000040022002100000000001010433000005f20410009c00000000010380190000006001100210000000000121019f0000000002000414000005f20420009c0000000002038019000000c002200210000000000112019f00000632011001c7000080100200003917c317b40000040f0000000101200190000012520000c13d0000010d0000013d00000007010000290000000001010433000000000201004b00000a1c0000613d000005fa02000041000000200310008c00000000030000190000000003024019000005fa01100197000000000401004b000000000200a019000005fa0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000003010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a1c0000c13d000000400100043d00000064021000390000061703000041000000000032043500000044021000390000061803000041000000000032043500000024021000390000002a03000039000000000032043500000605020000410000000000210435000000040210003900000006030000290000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c500010430000000400300043d0000002401300039000000090200002900000000002104350000060b010000410000000000130435000700000003001d00000004013000390000000802000029000000000021043500000000010004140000000b02000029000000040220008c00000ab80000c13d0000000103000031000000200130008c0000002004000039000000000403401900000aeb0000013d000000400400043d0000062a0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000a390000413d0000000006040433000000000606004b000002e60000613d000000f806300210000005fa07000041000000000303004b0000000003060019000000000307601900000000060504330000062b06600197000000000336019f00000000003504350000000b03000029000000a4033000390000000203300367000000000303043b000000800530008c00000c220000413d00000080053002700000062c0630009c000000000503a0190000062c0630009c0000000006000019000000100600203900000008076001bf000005fb0850009c00000000060720190000004007500270000005fb0850009c000000000507201900000004076001bf000005f20850009c00000000060720190000002007500270000005f20850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fb0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000a8a0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000a820000413d000000000800004b00000a8c0000613d0000000008050433000000000808004b000002e60000613d00000000080704330000062b08800197000000f809600210000000000889019f0000062d0880004100000000008704350000000306600210000000f80660008900000000036301cf000000ff0660008c00000000030020190000002106500039000000000036043500000c3f0000013d0000001f0430018f000000050230027200000aa80000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000aa10000413d000000000504004b00000ab60000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c500010430000005f202000041000005f20310009c00000000010280190000000704000029000005f20340009c00000000020440190000004002200210000000c001100210000000000121019f00000611011001c70000000b0200002917c317b40000040f000000070a00002900000000030100190000006003300270000005f203300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000ad70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000acf0000413d000000000705004b00000ae70000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000bfc0000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b00000000020000190000000102004039000005fb0410009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000000200230008c0000010d0000413d00000007020000290000000002020433000000000202004b00000c900000c13d00000044021000390000000a03000029000000000032043500000020021000390000060d03000041000000000032043500000024031000390000000904000029000000000043043500000004030000290000000000310435000006150310009c0000012b0000213d0000008003100039000a00000003001d000000400030043f000006160310009c0000012b0000213d000000c003100039000000400030043f00000006030000290000000a040000290000000000340435000000a0031000390000060e040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000db20000c13d0000000102000039000000010100003100000dc50000013d000000400400043d0000062a0540009c0000012b0000213d0000004005400039000000400050043f0000000105000039000000000554043600000000060000310000000206600367000000000700001900000005087002100000000009850019000000000886034f000000000808043b0000000000890435000000010770003a00000b290000413d0000000006040433000000000606004b000002e60000613d000000f806200210000005fa07000041000000000202004b0000000002060019000000000207601900000000060504330000062b06600197000000000226019f00000000002504350000000b0200002900000064022000390000000202200367000000000202043b000000800520008c00000cb60000413d00000080052002700000062c0620009c000000000502a0190000062c0620009c0000000006000019000000100600203900000008076001bf000005fb0850009c00000000060720190000004007500270000005fb0850009c000000000507201900000004076001bf000005f20850009c00000000060720190000002007500270000005f20850009c000000000507201900000002076001bf0000ffff0850008c000000000607201900000010075002700000000005072019000000ff0550008c000000000500001900000001050020390000000006560019000000200500008a0000004107600039000000000757016f000000400500043d0000000007750019000000000857004b00000000080000190000000108004039000005fb0970009c0000012b0000213d00000001088001900000012b0000c13d000000400070043f000000020760003900000000077504360000002108600039000000050880027200000b7a0000613d00000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa00039000000000b8a004b00000b720000413d000000000800004b00000b7c0000613d0000000008050433000000000808004b000002e60000613d00000000080704330000062b08800197000000f809600210000000000889019f0000062d0880004100000000008704350000000306600210000000f80660008900000000026201cf000000ff0660008c00000000020020190000002106500039000000000026043500000cd30000013d000000400200043d000500000002001d0000062a0220009c0000012b0000213d00000005030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a00000b990000413d00000005030000290000000003030433000000000303004b000002e60000613d000000f803100210000005fa04000041000000000101004b0000000001030019000000000104601900000000030204330000062b03300197000000000113019f0000000000120435000000230100008a0000000b020000290000000004210049000001c4012000390000000202000367000200000001001d000000000112034f000000000101043b0000000003000031000100000004001d0000000004430019000005fa05000041000000000641004b00000000060000190000000006058019000005fa04400197000005fa07100197000000000847004b0000000005008019000000000447013f000005fa0440009c00000000040600190000000004056019000000000404004b0000010d0000c13d0000000a040000290000000004410019000000000142034f000000000101043b000005fb0510009c0000010d0000213d00000000051300490000002003400039000005fa04000041000000000653004b00000000060000190000000006042019000005fa05500197000005fa07300197000000000857004b0000000004008019000000000557013f000005fa0550009c000000000406c019000000000404004b0000010d0000c13d000000010410008c00000ee40000c13d000000000132034f000000000101043b000000010200008a000005fa03000041000000000221004b00000000020000190000000002032019000005fa01100197000005fa0410009c0000000003008019000005fa01100167000005fa0110009c000000000102001900000000010360190000006002000039000400000002001d000000000101004b000010420000c13d000000400100043d000400000001001d0000062a0110009c0000012b0000213d00000004030000290000004001300039000000400010043f00000020013000390000062d02000041000000000021043500000001010000390000000000130435000010420000013d000000400200043d0000001f0430018f000000050330027200000c090000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000c010000413d000000000504004b00000c180000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f2010000410000000103000031000005f20430009c0000000003018019000005f20420009c000000000102401900000040011002100000006002300210000000000112019f000017c500010430000000400500043d0000062a0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000c2c0000413d0000000007050433000000000707004b000002e60000613d000000f807300210000005fa08000041000000000303004b0000000003070019000000000308601900000000070604330000062b07700197000000000337019f00000000003604350000000b0300002900000064033000390000000203300367000000000303043b000000800630008c00000d340000413d00000080063002700000062c0730009c000000000603a0190000062c0730009c0000000007000019000000100700203900000008087001bf000005fb0960009c00000000070820190000004008600270000005fb0960009c000000000608201900000004087001bf000005f20960009c00000000070820190000002008600270000005f20960009c000000000608201900000002087001bf0000ffff0960008c000000000708201900000010086002700000000006082019000000ff0660008c000000000600001900000001060020390000000007670019000000200600008a0000004108700039000000000868016f000000400600043d0000000008860019000000000968004b00000000090000190000000109004039000005fb0a80009c0000012b0000213d00000001099001900000012b0000c13d000000400080043f000000020870003900000000088604360000002109700039000000050990027200000c7d0000613d000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb00039000000000c9b004b00000c750000413d000000000900004b00000c7f0000613d0000000009060433000000000909004b000002e60000613d00000000090804330000062b09900197000000f80a70021000000000099a019f0000062d0990004100000000009804350000000307700210000000f80770008900000000037301cf000000ff0770008c00000000030020190000002107600039000000000037043500000d510000013d00000064021000390000061203000041000000000032043500000044021000390000061303000041000000000032043500000024021000390000003603000039000000000032043500000605020000410000000000210435000000040210003900000006030000290000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c500010430000000400100043d00000044021000390000063503000041000000000032043500000024021000390000001f03000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c500010430000000400500043d0000062a0650009c0000012b0000213d0000004006500039000000400060043f000000010600003900000000066504360000000007000031000000020770036700000000080000190000000509800210000000000a960019000000000997034f000000000909043b00000000009a0435000000010880003a00000cc00000413d0000000007050433000000000707004b000002e60000613d000000f807200210000005fa08000041000000000202004b0000000002070019000000000208601900000000070604330000062b07700197000000000227019f0000000000260435000000400600043d0000062a0260009c0000012b0000213d0000000b0900002900000044029000390000000202200367000000000202043b0000004007600039000000400070043f00000020076000390000062e0800004100000000008704350000001507000039000000000076043500000021076000390000006002200210000000000027043500000124029000390000000202200367000000000202043b000000800720008c00000e150000413d00000080072002700000062c0820009c000000000702a0190000062c0820009c0000000008000019000000100800203900000008098001bf000005fb0a70009c00000000080920190000004009700270000005fb0a70009c000000000709201900000004098001bf000005f20a70009c00000000080920190000002009700270000005f20a70009c000000000709201900000002098001bf0000ffff0a70008c000000000809201900000010097002700000000007092019000000ff0770008c000000000700001900000001070020390000000008780019000000200700008a0000004109800039000000000979016f000000400700043d0000000009970019000000000a79004b000000000a000019000000010a004039000005fb0b90009c0000012b0000213d000000010aa001900000012b0000c13d000000400090043f00000002098000390000000009970436000000210a800039000000050aa0027200000d210000613d000000000b000031000000020bb00367000000000c000019000000050dc00210000000000ed90019000000000ddb034f000000000d0d043b0000000000de0435000000010cc00039000000000dac004b00000d190000413d000000000a00004b00000d230000613d000000000a070433000000000a0a004b000002e60000613d000000000a0904330000062b0aa00197000000f80b800210000000000aab019f0000062d0aa000410000000000a904350000000308800210000000f80880008900000000028201cf000000ff0880008c00000000020020190000002108700039000000000028043500000e320000013d000000400600043d0000062a0760009c0000012b0000213d0000004007600039000000400070043f00000001070000390000000007760436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a00000d3e0000413d0000000008060433000000000808004b000002e60000613d000000f808300210000005fa09000041000000000303004b0000000003080019000000000309601900000000080704330000062b08800197000000000338019f0000000000370435000000400700043d0000062a0370009c0000012b0000213d0000000b0a0000290000004403a000390000000203300367000000000303043b0000004008700039000000400080043f00000020087000390000062e090000410000000000980435000000150800003900000000008704350000002108700039000000600330021000000000003804350000012403a000390000000203300367000000000303043b000000800830008c00000f470000413d00000080083002700000062c0930009c000000000803a0190000062c0930009c00000000090000190000001009002039000000080a9001bf000005fb0b80009c00000000090a2019000000400a800270000005fb0b80009c00000000080a2019000000040a9001bf000005f20b80009c00000000090a2019000000200a800270000005f20b80009c00000000080a2019000000020a9001bf0000ffff0b80008c00000000090a2019000000100a80027000000000080a2019000000ff0880008c000000000800001900000001080020390000000009890019000000200800008a000000410a900039000000000a8a016f000000400800043d000000000aa80019000000000b8a004b000000000b000019000000010b004039000005fb0ca0009c0000012b0000213d000000010bb001900000012b0000c13d0000004000a0043f000000020a900039000000000aa80436000000210b900039000000050bb0027200000d9f0000613d000000000c000031000000020cc00367000000000d000019000000050ed00210000000000fea0019000000000eec034f000000000e0e043b0000000000ef0435000000010dd00039000000000ebd004b00000d970000413d000000000b00004b00000da10000613d000000000b080433000000000b0b004b000002e60000613d000000000b0a04330000062b0bb00197000000f80c900210000000000bbc019f0000062d0bb000410000000000ba04350000000309900210000000f80990008900000000039301cf000000ff0990008c00000000030020190000002109800039000000000039043500000f640000013d000005f204000041000005f20520009c00000000020480190000004002200210000005f20530009c00000000030480190000006003300210000000000223019f000005f20310009c0000000001048019000000c001100210000000000112019f0000000b0200002917c317af0000040f000000010220018f00030000000103550000006001100270000105f20010019d000005f2011001970000006003000039000900000003001d000000000301004b00000de50000c13d00000009010000290000000031010434000800000003001d000000000202004b00000f1a0000c13d000000000201004b000011110000c13d000000400300043d000b00000003001d0000060501000041000000000013043500000004013000390000000602000029000000000021043500000024023000390000000a0100002917c315ac0000040f0000000b040000290000000001410049000005f202000041000005f20310009c0000000001028019000005f20340009c000000000204401900000040022002100000006001100210000000000121019f000017c500010430000005fb0310009c0000012b0000213d0000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000005fb0530009c0000012b0000213d00000001044001900000012b0000c13d000000400030043f00000009030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000e050000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000dfd0000413d000000000604004b00000dc90000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000dc90000013d000000400700043d0000062a0870009c0000012b0000213d0000004008700039000000400080043f0000000108000039000000000887043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a00000e1f0000413d0000000009070433000000000909004b000002e60000613d000000f809200210000005fa0a000041000000000202004b000000000209001900000000020a601900000000090804330000062b09900197000000000229019f0000000000280435000000400200043d00000020092000390000000008010433000000000a08004b00000e3f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c1a0019000000000c0c04330000000000cb0435000000000b8a004b00000e380000413d00000000019800190000000000010435000000000128001900000020091000390000000008030433000000000a08004b00000e4e0000613d000000000a000019000000000b9a0019000000200aa00039000000000c3a0019000000000c0c04330000000000cb0435000000000b8a004b00000e470000413d00000000039800190000000000030435000000000118001900000020081000390000000003040433000000000903004b00000e5d0000613d0000000009000019000000000a8900190000002009900039000000000b490019000000000b0b04330000000000ba0435000000000a39004b00000e560000413d00000000048300190000000000040435000000000113001900000020041000390000000003050433000000000803004b00000e6c0000613d000000000800001900000000094800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000938004b00000e650000413d00000000044300190000000000040435000000000113001900000020041000390000000003060433000000000503004b00000e7b0000613d000000000500001900000000084500190000002005500039000000000965001900000000090904330000000000980435000000000835004b00000e740000413d00000000044300190000000000040435000000000113001900000020041000390000000003070433000000000503004b00000e8a0000613d000000000500001900000000064500190000002005500039000000000875001900000000080804330000000000860435000000000635004b00000e830000413d000000000443001900000000000404350000000001210049000000000113001900000000001204350000003f03100039000000200100008a000000000313016f0000000005230019000000000335004b00000000030000190000000103004039000005fb0450009c0000012b0000213d00000001033001900000012b0000c13d000000400050043f000000230300008a0000000b060000290000000004630049000001c4036000390000000207000367000000000637034f000000000606043b00000000080000310000000009480019000005fa0a000041000000000b96004b000000000b000019000000000b0a8019000005fa09900197000005fa0c600197000000000d9c004b000000000a00801900000000099c013f000005fa0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fb0a60009c0000010d0000213d000000000a6800490000002008900039000005fa09000041000000000ba8004b000000000b000019000000000b092019000005fa0aa00197000005fa0c800197000000000dac004b0000000009008019000000000aac013f000005fa0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012700000c13d000000000687034f000000000606043b000000010700008a000005fa08000041000000000776004b00000000070000190000000007082019000005fa06600197000005fa0960009c0000000008008019000005fa06600167000005fa0660009c00000000070860190000006006000039000000000707004b000012ee0000c13d0000062a0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062d070000410000000000760435000000010600003900000000006504350000000006050019000012ee0000013d000000380210008c000010250000413d0000002002100270000005f20310009c00000000030100190000000003022019000005f20210009c0000000002000019000000040200203900000002042001bf0000ffff0530008c000000000204201900000010043002700000000003042019000000ff0330008c00000000030000190000000103002039000000400400043d000400000004001d0000062a0440009c0000012b0000213d000000000232019f00000004040000290000004003400039000000400030043f0000000203200039000000000334043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a00000f020000413d00000004040000290000000004040433000000000404004b000002e60000613d00000000040304330000062b04400197000000f805200210000000000445019f0000062f044001c700000000004304350000000302200210000000f80220008900000000012101cf000000040200002900000021022000390000000000120435000010420000013d000000000201004b00000f310000c13d0000060f0100004100000000001004390000000b010000290000000400100443000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000610011001c7000080020200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000000000101004b000005d80000613d00000009010000290000000001010433000000000201004b000000430000613d000005fa02000041000000200310008c00000000030000190000000003024019000005fa01100197000000000401004b000000000200a019000005fa0110009c00000000010300190000000001026019000000000101004b0000010d0000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b0000010d0000c13d000000000101004b00000a070000613d000000430000013d000000400800043d0000062a0980009c0000012b0000213d0000004009800039000000400090043f00000001090000390000000009980436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc90019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a00000f510000413d000000000a080433000000000a0a004b000002e60000613d000000f80a300210000005fa0b000041000000000303004b00000000030a001900000000030b6019000000000a0904330000062b0aa0019700000000033a019f0000000000390435000000400300043d000000200a3000390000000009010433000000000b09004b00000f710000613d000000000b000019000000000cab0019000000200bb00039000000000d1b0019000000000d0d04330000000000dc0435000000000c9b004b00000f6a0000413d0000000001a9001900000000000104350000000001390019000000200a1000390000000009020433000000000b09004b00000f800000613d000000000b000019000000000cab0019000000200bb00039000000000d2b0019000000000d0d04330000000000dc0435000000000c9b004b00000f790000413d0000000002a900190000000000020435000000000119001900000020091000390000000002040433000000000a02004b00000f8f0000613d000000000a000019000000000b9a0019000000200aa00039000000000c4a0019000000000c0c04330000000000cb0435000000000b2a004b00000f880000413d00000000049200190000000000040435000000000112001900000020041000390000000002050433000000000902004b00000f9e0000613d0000000009000019000000000a4900190000002009900039000000000b590019000000000b0b04330000000000ba0435000000000a29004b00000f970000413d00000000044200190000000000040435000000000112001900000020041000390000000002060433000000000502004b00000fad0000613d000000000500001900000000094500190000002005500039000000000a650019000000000a0a04330000000000a90435000000000925004b00000fa60000413d00000000044200190000000000040435000000000112001900000020041000390000000002070433000000000502004b00000fbc0000613d000000000500001900000000064500190000002005500039000000000975001900000000090904330000000000960435000000000625004b00000fb50000413d00000000044200190000000000040435000000000112001900000020041000390000000002080433000000000502004b00000fcb0000613d000000000500001900000000064500190000002005500039000000000785001900000000070704330000000000760435000000000625004b00000fc40000413d000000000442001900000000000404350000000001310049000000000112001900000000001304350000003f02100039000000200100008a000000000212016f0000000005320019000000000225004b00000000020000190000000102004039000005fb0450009c0000012b0000213d00000001022001900000012b0000c13d000000400050043f000000230200008a0000000b060000290000000004620049000001c4026000390000000207000367000000000627034f000000000606043b00000000080000310000000009480019000005fa0a000041000000000b96004b000000000b000019000000000b0a8019000005fa09900197000005fa0c600197000000000d9c004b000000000a00801900000000099c013f000005fa0990009c00000000090b001900000000090a6019000000000909004b0000010d0000c13d0000000a090000290000000009960019000000000697034f000000000606043b000005fb0a60009c0000010d0000213d000000000a6800490000002008900039000005fa09000041000000000ba8004b000000000b000019000000000b092019000005fa0aa00197000005fa0c800197000000000dac004b0000000009008019000000000aac013f000005fa0aa0009c00000000090bc019000000000909004b0000010d0000c13d000000010960008c000012a20000c13d000000000687034f000000000606043b000000010700008a000005fa08000041000000000776004b00000000070000190000000007082019000005fa06600197000005fa0960009c0000000008008019000005fa06600167000005fa0660009c00000000070860190000006006000039000000000707004b000013810000c13d0000062a0650009c0000012b0000213d0000004006500039000000400060043f00000020065000390000062d070000410000000000760435000000010600003900000000006504350000000006050019000013810000013d000000400200043d000400000002001d0000062a0220009c0000012b0000213d00000004030000290000004002300039000000400020043f0000000102000039000000000223043600000000030000310000000203300367000000000400001900000005054002100000000006520019000000000553034f000000000505043b0000000000560435000000010440003a000010310000413d00000004030000290000000003030433000000000303004b000002e60000613d000000f80110021000000000030204330000062b03300197000000000113019f000005fa01100167000000000012043500000060010000390000000b0200002900000144032000390000000202000367000000000332034f000000000303043b000000000303004b000010b70000c13d0000000203000029000000000432034f000000000300003100000001050000290000000005530019000000000904043b000005fa04000041000000000659004b00000000060000190000000006048019000005fa05500197000005fa07900197000000000857004b0000000004008019000000000557013f000005fa0550009c000000000406c019000000000404004b0000010d0000c13d00000009040000290000000004040433000000070500002900000000050504330000000606000029000000000606043300000005070000290000000007070433000000040800002900000000080804330000000a0a0000290000000009a90019000000000292034f000000000202043b000005fb0a20009c0000010d0000213d00000000032300490000002009900039000005fa0a000041000000000b39004b000000000b000019000000000b0a2019000005fa03300197000005fa09900197000000000c39004b000000000a008019000000000339013f000005fa0330009c00000000030b001900000000030a6019000000000303004b0000010d0000c13d0000000003450019000000000363001900000000037300190000000003830019000000000223001900000000030104330000000002320019000005fb02200197000000380320008c000011590000413d0000002003200270000005f20420009c00000000040200190000000004032019000005f20320009c0000000003000019000000040300203900000002053001bf0000ffff0640008c000000000305201900000010054002700000000004052019000000ff0440008c00000000040000190000000104002039000000400600043d0000062a0560009c0000012b0000213d000000000343019f0000004004600039000000400040043f0000000204300039000000000446043600000000050000310000000205500367000000000700001900000005087002100000000009840019000000000885034f000000000808043b0000000000890435000000010770003a000010a10000413d0000000005060433000000000505004b000002e60000613d00000000050404330000062b05500197000000f807300210000000000557019f00000631055001c700000000005404350000000303300210000000f80330008900000000023201cf00000021036000390000000000230435000011730000013d00000628010000410000000000100439000005f2010000410000000002000414000005f20320009c0000000001024019000000c00110021000000629011001c70000800b0200003917c317b40000040f00000001022001900000010d0000613d000000000101043b000000800210008c0000111c0000413d00000080021002700000062c0310009c000000000201a0190000062c0310009c0000000003000019000000100300203900000008043001bf000005fb0520009c00000000030420190000004004200270000005fb0520009c000000000204201900000004043001bf000005f20520009c00000000030420190000002004200270000005f20520009c000000000204201900000002043001bf0000ffff0520008c000000000304201900000010042002700000000002042019000000ff0220008c00000000020000190000000102002039000000000323001900000041023000390000000304000029000000000442016f000000400200043d0000000004420019000000000524004b00000000050000190000000105004039000005fb0640009c0000012b0000213d00000001055001900000012b0000c13d000000400040043f0000000204300039000000000442043600000021053000390000000505500272000010fe0000613d00000000060000310000000206600367000000000700001900000005087002100000000009840019000000000886034f000000000808043b00000000008904350000000107700039000000000857004b000010f60000413d000000000500004b000011000000613d0000000005020433000000000505004b000002e60000613d00000000050404330000062b05500197000000f806300210000000000556019f0000062d0550004100000000005404350000000303300210000000f80330008900000000013101cf000000ff0330008c000000000100201900000021032000390000000000130435000011390000013d000005f2020000410000000804000029000005f20340009c00000000030200190000000003044019000005f20410009c000000000102801900000060011002100000004002300210000000000121019f000017c500010430000000400200043d0000062a0320009c0000012b0000213d0000004003200039000000400030043f0000000103000039000000000332043600000000040000310000000204400367000000000500001900000005065002100000000007630019000000000664034f000000000606043b0000000000670435000000010550003a000011260000413d0000000004020433000000000404004b000002e60000613d000000f804100210000005fa05000041000000000101004b0000000001040019000000000105601900000000040304330000062b04400197000000000114019f0000000000130435000000400100043d00000020041000390000000003020433000000000503004b000011460000613d000000000500001900000000064500190000002005500039000000000725001900000000070704330000000000760435000000000635004b0000113f0000413d00000000024300190000063f0400004100000000004204350000000202300039000000000021043500000041023000390000000303000029000000000332016f0000000002130019000000000332004b00000000030000190000000103004039000005fb0420009c0000012b0000213d00000001033001900000012b0000c13d000000400020043f00000002020003670000104a0000013d000000400600043d0000062a0360009c0000012b0000213d0000004003600039000000400030043f0000000103000039000000000336043600000000040000310000000204400367000000000500001900000005075002100000000008730019000000000774034f000000000707043b0000000000780435000000010550003a000011630000413d0000000004060433000000000404004b000002e60000613d000000f80220021000000000040304330000062b04400197000000000242019f0000063002200041000000000023043500000000020000310000000103000029000000000532001900000002030003670000000204000029000000000443034f000000000404043b000005fa07000041000000000854004b00000000080000190000000008078019000005fa05500197000005fa09400197000000000a59004b0000000007008019000000000559013f000005fa0550009c00000000050800190000000005076019000000000505004b0000010d0000c13d0000000a050000290000000005540019000000000353034f000000000403043b000005fb0340009c0000010d0000213d00000000024200490000002005500039000005fa03000041000000000725004b00000000070000190000000007032019000005fa02200197000005fa08500197000000000928004b0000000003008019000000000228013f000005fa0220009c00000000020700190000000002036019000000000202004b0000010d0000c13d000000400200043d00000020032000390000000007060433000000000807004b000011ab0000613d000000000800001900000000093800190000002008800039000000000a680019000000000a0a04330000000000a90435000000000978004b000011a40000413d000000000637001900000000000604350000000006270019000000200860003900000009070000290000000007070433000000000907004b000011bc0000613d0000000009000019000000000a8900190000002009900039000000090b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011b40000413d000000000887001900000000000804350000000006670019000000200860003900000007070000290000000007070433000000000907004b000011cd0000613d0000000009000019000000000a8900190000002009900039000000070b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011c50000413d000000000887001900000000000804350000000006670019000000200860003900000006070000290000000007070433000000000907004b000011de0000613d0000000009000019000000000a8900190000002009900039000000060b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011d60000413d000000000887001900000000000804350000000006670019000000200860003900000005070000290000000007070433000000000907004b000011ef0000613d0000000009000019000000000a8900190000002009900039000000050b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011e70000413d000000000887001900000000000804350000000006670019000000200860003900000004070000290000000007070433000000000907004b000012000000613d0000000009000019000000000a8900190000002009900039000000040b000029000000000bb90019000000000b0b04330000000000ba0435000000000a79004b000011f80000413d0000000008870019000000000008043500000000066700190000001f0740018f000000200860003900000002055003670000000509400272000012110000613d000000000a000019000000050ba00210000000000cb80019000000000bb5034f000000000b0b043b0000000000bc0435000000010aa00039000000000b9a004b000012090000413d000000000a07004b000012200000613d0000000509900210000000000595034f00000000089800190000000307700210000000000908043300000000097901cf000000000979022f000000000505043b0000010007700089000000000575022f00000000057501cf000000000595019f00000000005804350000000004460019000000200640003900000000000604350000000005010433000000000705004b0000122e0000613d000000000700001900000000086700190000002007700039000000000917001900000000090904330000000000980435000000000857004b000012270000413d000000000165001900000000000104350000000001240049000000000115001900000000001204350000003f011000390000000304000029000000000441016f0000000001240019000000000441004b00000000040000190000000104004039000005fb0510009c0000012b0000213d00000001044001900000012b0000c13d000000400010043f000005f201000041000005f20430009c000000000301801900000040033002100000000002020433000005f20420009c00000000020180190000006002200210000000000232019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f00000001012001900000010d0000613d0000000a0100002917c3178d0000040f0000064002000041000000000020043900000008020000290000000400200443000900000001001d0000800a01000039000000240200003917c3159b0000040f0000000902000029000000000112004b0000000001000019000000010100a03917c316500000040f0000000b01000029000001e4021000390000000a0100002917c316680000040f000000000300003117c316940000040f0000064101000041000000400200043d0000000000120435000005f201000041000005f20320009c0000000001024019000000400110021000000642011001c7000017c40001042e000000380760008c000012d40000413d0000002007600270000005f20860009c00000000080600190000000008072019000005f20760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062a0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000128b0000413d0000000009050433000000000909004b000002e60000613d00000000090804330000062b09900197000000f80a70021000000000099a019f0000062f099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000012ee0000013d000000380760008c000013670000413d0000002007600270000005f20860009c00000000080600190000000008072019000005f20760009c0000000007000019000000040700203900000002097001bf0000ffff0a80008c000000000709201900000010098002700000000008092019000000ff0880008c000000000800001900000001080020390000062a0950009c0000012b0000213d000000000787019f0000004008500039000000400080043f0000000208700039000000000885043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb80019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012bd0000413d0000000009050433000000000909004b000002e60000613d00000000090804330000062b09900197000000f80a70021000000000099a019f0000062f099001c700000000009804350000000307700210000000f80770008900000000067601cf000000210750003900000000006704350000000006050019000013810000013d0000062a0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000012dd0000413d0000000008050433000000000808004b000002e60000613d000000f80660021000000000080704330000062b08800197000000000668019f000005fa0660016700000000006704350000000006050019000000400500043d0000062a0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a000012f80000413d0000000009050433000000000909004b000002e60000613d00000000090704330000062b0990019700000630099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a3b034f000000000c0a043b000005fa0a000041000000000d9c004b000000000d000019000000000d0a8019000005fa09900197000005fa0ec00197000000000f9e004b000000000a00801900000000099e013f000005fa0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009020433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fb0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fa0d000041000000000e7c004b000000000e000019000000000e0d2019000005fa07700197000005fa0cc00197000000000f7c004b000000000d00801900000000077c013f000005fa0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fb09700197000000380790008c000014150000413d0000002007900270000005f20890009c000000000709a019000005f20890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062a0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013510000413d000000000b070433000000000b0b004b000002e60000613d000000000b0a04330000062b0bb00197000000f80c800210000000000bbc019f000006310bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf000000210970003900000000008904350000142e0000013d0000062a0750009c0000012b0000213d0000004007500039000000400070043f00000001070000390000000007750436000000000800003100000002088003670000000009000019000000050a900210000000000ba70019000000000aa8034f000000000a0a043b0000000000ab0435000000010990003a000013700000413d0000000008050433000000000808004b000002e60000613d000000f80660021000000000080704330000062b08800197000000000668019f000005fa0660016700000000006704350000000006050019000000400500043d0000062a0750009c0000012b0000213d0000004007500039000000400070043f0000000108000039000000000785043600000000090000310000000209900367000000000a000019000000050ba00210000000000cb70019000000000bb9034f000000000b0b043b0000000000bc0435000000010aa0003a0000138b0000413d0000000009050433000000000909004b000002e60000613d00000000090704330000062b0990019700000630099001c7000000000097043500000000070000310000000009470019000000020b000367000000000a2b034f000000000c0a043b000005fa0a000041000000000d9c004b000000000d000019000000000d0a8019000005fa09900197000005fa0ec00197000000000f9e004b000000000a00801900000000099e013f000005fa0990009c00000000090d001900000000090a6019000000000909004b0000010d0000c13d0000000009030433000000000a0604330000000a0d000029000000000cdc0019000000000bcb034f000000000b0b043b000005fb0db0009c0000010d0000213d0000000007b70049000000200cc00039000005fa0d000041000000000e7c004b000000000e000019000000000e0d2019000005fa07700197000005fa0cc00197000000000f7c004b000000000d00801900000000077c013f000005fa0770009c00000000070e001900000000070d6019000000000707004b0000010d0000c13d00000000079a00190000000007b7001900000000090504330000000007970019000005fb09700197000000380790008c000014d80000413d0000002007900270000005f20890009c000000000709a019000005f20890009c00000000080000190000000408002039000000020a8001bf0000ffff0b70008c00000000080a2019000000100a70027000000000070a2019000000ff0770008c000000000a000019000000010a002039000000400700043d0000062a0b70009c0000012b0000213d0000000008a8019f000000400a7000390000004000a0043f000000020a800039000000000aa70436000000000b000031000000020bb00367000000000c000019000000050dc00210000000000eda0019000000000ddb034f000000000d0d043b0000000000de0435000000010cc0003a000013e40000413d000000000b070433000000000b0b004b000002e60000613d000000000b0a04330000062b0bb00197000000f80c800210000000000bbc019f000006310bb001c70000000000ba04350000000308800210000000f80880008900000000088901cf00000021097000390000000000890435000014f10000013d0000001f0430018f0000000502300272000014050000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000013fe0000413d000000000504004b000014130000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000017c500010430000000400700043d0000062a0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a0000141e0000413d000000000a070433000000000a0a004b000002e60000613d000000f809900210000000000a0804330000062b0aa001970000000009a9019f00000630099000410000000000980435000000000900003100000000084900190000000204000367000000000334034f000000000303043b000005fa0a000041000000000b83004b000000000b000019000000000b0a8019000005fa08800197000005fa0c300197000000000d8c004b000000000a00801900000000088c013f000005fa0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000003830019000000000434034f000000000804043b000005fb0480009c0000010d0000213d00000000048900490000002009300039000005fa03000041000000000a49004b000000000a000019000000000a032019000005fa04400197000005fa0b900197000000000c4b004b000000000300801900000000044b013f000005fa0440009c00000000030ac019000000000303004b0000010d0000c13d000000400300043d0000002004300039000006250a0000410000000000a40435000000210b300039000000000a070433000000000c0a004b000014660000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b0000145f0000413d0000000007ba0019000000000007043500000000073a0019000000210b700039000000000a020433000000000c0a004b000014750000613d000000000c000019000000000dbc0019000000200cc00039000000000e2c0019000000000e0e04330000000000ed0435000000000dac004b0000146e0000413d0000000002ba0019000000000002043500000000027a0019000000210a2000390000000007060433000000000b07004b000014840000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b0000147d0000413d0000000006a70019000000000006043500000000022700190000001f0680018f00000021072000390000000209900367000000050a800272000014950000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b0000148d0000413d000000000b06004b000014a40000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000002820019000000210720003900000000000704350000000006050433000000000806004b000014b20000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b000014ab0000413d0000000005760019000000000005043500000000023200490000000002260019000000010520003900000000005304350000004002200039000000000212016f0000000001320019000000000221004b00000000020000190000000102004039000005fb0510009c0000012b0000213d00000001022001900000012b0000c13d000000400010043f000005f201000041000005f20240009c0000000002010019000000000204401900000040022002100000000003030433000005f20430009c00000000030180190000006003300210000000000223019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f0000000101200190000012520000c13d0000010d0000013d000000400700043d0000062a0a70009c0000012b0000213d000000400a7000390000004000a0043f0000000008870436000000000a000031000000020aa00367000000000b000019000000050cb00210000000000dc80019000000000cca034f000000000c0c043b0000000000cd0435000000010bb0003a000014e10000413d000000000a070433000000000a0a004b000002e60000613d000000f809900210000000000a0804330000062b0aa001970000000009a9019f00000630099000410000000000980435000000000900003100000000084900190000000204000367000000000224034f000000000202043b000005fa0a000041000000000b82004b000000000b000019000000000b0a8019000005fa08800197000005fa0c200197000000000d8c004b000000000a00801900000000088c013f000005fa0880009c00000000080b001900000000080a6019000000000808004b0000010d0000c13d0000000a080000290000000002820019000000000424034f000000000804043b000005fb0480009c0000010d0000213d00000000048900490000002009200039000005fa02000041000000000a49004b000000000a000019000000000a022019000005fa04400197000005fa0b900197000000000c4b004b000000000200801900000000044b013f000005fa0440009c00000000020ac019000000000202004b0000010d0000c13d000000400200043d0000002004200039000006320a0000410000000000a40435000000210b200039000000000a070433000000000c0a004b000015290000613d000000000c000019000000000dbc0019000000200cc00039000000000e7c0019000000000e0e04330000000000ed0435000000000dac004b000015220000413d0000000007ba0019000000000007043500000000072a0019000000210b700039000000000a030433000000000c0a004b000015380000613d000000000c000019000000000dbc0019000000200cc00039000000000e3c0019000000000e0e04330000000000ed0435000000000dac004b000015310000413d0000000003ba0019000000000003043500000000037a0019000000210a3000390000000007060433000000000b07004b000015470000613d000000000b000019000000000cab0019000000200bb00039000000000d6b0019000000000d0d04330000000000dc0435000000000c7b004b000015400000413d0000000006a70019000000000006043500000000033700190000001f0680018f00000021073000390000000209900367000000050a800272000015580000613d000000000b000019000000050cb00210000000000dc70019000000000cc9034f000000000c0c043b0000000000cd0435000000010bb00039000000000cab004b000015500000413d000000000b06004b000015670000613d000000050aa002100000000009a9034f0000000007a700190000000306600210000000000a070433000000000a6a01cf000000000a6a022f000000000909043b0000010006600089000000000969022f00000000066901cf0000000006a6019f00000000006704350000000003830019000000210730003900000000000704350000000006050433000000000806004b000015750000613d000000000800001900000000097800190000002008800039000000000a580019000000000a0a04330000000000a90435000000000968004b0000156e0000413d0000000005760019000000000005043500000000032300490000000003360019000000010530003900000000005204350000004003300039000000000313016f0000000001230019000000000331004b00000000030000190000000103004039000005fb0510009c0000012b0000213d00000001033001900000012b0000c13d000000400010043f000005f201000041000005f20340009c0000000003010019000000000304401900000040033002100000000002020433000005f20420009c00000000020180190000006002200210000000000232019f0000000003000414000005f20430009c0000000001034019000000c001100210000000000121019f00000632011001c7000080100200003917c317b40000040f0000000101200190000012520000c13d0000010d0000013d0000000003010019000005f2010000410000000004000414000005f20540009c0000000001044019000000c001100210000000600220021000000000011200190000064301100041000000000203001917c317b40000040f0000000102200190000015aa0000613d000000000101043b000000000001042d0000000001000019000017c50001043000000000030104330000000002320436000000000403004b000015b80000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000015b10000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000403004b000015ce0000613d000000000400001900000000051400190000002004400039000000000624001900000000060604330000000000650435000000000534004b000015c70000413d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001120019000000000001042d0003000000000002000000040100008a0000000003100031000005fa010000410000005f0230008c00000000020000190000000002012019000005fa04300197000000000504004b0000000001008019000005fa0440009c000000000102c019000000000101004b0000161b0000613d00000002010003670000004402100370000000000202043b000005fb0420009c0000161b0000213d0000000003230049000005fa04000041000002600530008c00000000050000190000000005044019000005fa03300197000000000603004b000000000400a019000005fa0330009c00000000030500190000000003046019000000000303004b0000161b0000c13d0000000003000411000080010330008c000016190000c13d0000000003000412000005fc033001970000000004000410000000000343004b000016190000c13d000000a403200039000000000331034f0000006402200039000000000121034f000000000101043b000000000203043b000000000302004b0000161d0000c13d0000000004000415000000030440008a00000020044000c90000000001000414000300000000001d000100000004001d000005f202000041000005f20310009c0000000001028019000000c001100210000080010200003917c317af0000040f000000010300002900030000000103550000006001100270000105f20010019d000000200130011a00000001012001950000000101200190000016350000613d0000000001000019000017c40001042e0000000001000019000017c50001043000000000431200a900000000422300d9000000000112004b0000164a0000c13d0000000004000415000000020440008a00000020044000c90000000001000414000200000000001d000000000203004b0000160a0000613d000005f202000041000005f20410009c0000000001028019000000c00110021000000632011001c700008009020000390000800104000039000000000500001917c317af0000040f0000000003000415000000020330008a00000020033000c9000016120000013d000000400100043d00000064021000390000064403000041000000000032043500000044021000390000064503000041000000000032043500000024021000390000002503000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c5000104300000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000000000101004b000016530000613d000000000001042d000000400100043d00000064021000390000064603000041000000000032043500000044021000390000064703000041000000000032043500000024021000390000002203000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000614011001c7000017c500010430000000000300003100000000041300490000001f0540008a0000000204000367000000000224034f000000000202043b000005fa06000041000000000752004b00000000070000190000000007064019000005fa05500197000005fa08200197000000000958004b000000000600a019000000000558013f000005fa0550009c00000000050700190000000005066019000000000505004b000016920000613d0000000001120019000000000214034f000000000202043b000005fb0420009c000016920000213d00000000032300490000002001100039000005fa04000041000000000531004b00000000050000190000000005042019000005fa03300197000005fa06100197000000000736004b0000000004008019000000000336013f000005fa0330009c00000000030500190000000003046019000000000303004b000016920000c13d000000000001042d0000000001000019000017c500010430000006480420009c000016c60000813d0000003f04200039000000200500008a000000000554016f000000400400043d0000000005540019000000000645004b00000000060000190000000106004039000005fb0750009c000016c60000213d0000000106600190000016c60000c13d000000400050043f00000000042404360000000005120019000000000335004b000016cc0000213d0000001f0320018f00000002011003670000000505200272000016b40000613d000000000600001900000005076002100000000008740019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000016ac0000413d000000000603004b000016c30000613d0000000505500210000000000151034f00000000055400190000000303300210000000000605043300000000063601cf000000000636022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000161019f000000000015043500000000012400190000000000010435000000000001042d0000063d0100004100000000001004350000004101000039000000040010043f0000063e01000041000017c5000104300000000001000019000017c5000104300000000001000411000080010110008c000016d20000613d000000000001042d0000063d0100004100000000001004350000000101000039000000040010043f0000063e01000041000017c50001043000000000070200190000000008450019000005f2024001970000000202200367000000000403004b000016f40000613d000000000458004b0000170b0000413d0000000004000031000000000584004b0000170b0000413d000005fe0510009c000017110000813d0000000004840049000005f20440019700000000024203df000000c001100210000006210110019700000649011001c700000000011203af000000000206004b0000000005000019000000010500c03900008009020000390000000004070019000000000600001917c317b90000040f000017060000013d000000000358004b0000170b0000413d0000000003000031000000000483004b0000170b0000413d00000649040000410000063305000041000000000606004b0000000004056019000000c0011002100000062101100197000000000114019f0000000003830049000005f20330019700000000023203df00000000011203af000000000207001917c317b90000040f00030000000103550000006001100270000105f20010019d000000010120018f000000000001042d0000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000000400100043d00000044021000390000060403000041000000000032043500000024021000390000000803000039000000000032043500000605020000410000000000210435000000040210003900000020030000390000000000320435000005f202000041000005f20310009c0000000001028019000000400110021000000606011001c7000017c5000104300000000102000031000000000101004b0000176c0000613d000006480120009c000017660000813d0000003f01200039000000200300008a000000000331016f000000400100043d0000000003310019000000000413004b00000000040000190000000104004039000005fb0530009c000017660000213d0000000104400190000017660000c13d000000400030043f00000000032104360000001f042000390000000504400272000017440000613d00000000050000310000000205500367000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000173c0000413d000000000400004b000017460000613d0000000104000031000000000442004b0000178b0000213d00000003050003670000001f0420018f0000000502200272000017560000613d000000000600001900000005076002100000000008730019000000000775034f000000000707043b00000000007804350000000106600039000000000726004b0000174e0000413d000000000604004b000017650000613d0000000502200210000000000525034f00000000022300190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d0000063d0100004100000000001004350000004101000039000000040010043f0000063e01000041000017c50001043000000003010003670000001f0420018f0000000503200272000017780000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000635004b000017710000413d000000000504004b000017860000613d00000003044002100000000503300210000000000503043300000000054501cf000000000545022f000000000131034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000005f201000041000005f20320009c00000000010240190000006001100210000017c5000104300000000001000019000017c500010430000000e0031000390000000202000367000000000332034f000000000303043b000005fc03300198000017970000613d0000012001100039000000000112034f000000000101043b000017a80000013d000000a003100039000000000332034f0000006004100039000000000442034f000000000404043b000000000503043b00000000634500a9000000000605004b000017a30000613d00000000655300d9000000000445004b000017a90000c13d0000012001100039000000000112034f000000000101043b000000000131001a000017a90000413d000000000001042d0000063d0100004100000000001004350000001101000039000000040010043f0000063e01000041000017c500010430000017b2002104210000000102000039000000000001042d0000000002000019000000000001042d000017b7002104230000000102000039000000000001042d0000000002000019000000000001042d000017bc002104210000000102000039000000000001042d0000000002000019000000000001042d000017c1002104230000000102000039000000000001042d0000000002000019000000000001042d000017c300000432000017c40001042e000017c5000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000df9c158800000000000000000000000000000000000000000000000000000000df9c158900000000000000000000000000000000000000000000000000000000e2f318e300000000000000000000000000000000000000000000000000000000eeb8cb0900000000000000000000000000000000000000000000000000000000202bcce700000000000000000000000000000000000000000000000000000000a28c1aee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000ffffffff00000000000000000000000000000000000000000000000000000000ecf95b8a000000000000000000000000000000000000000000000000000000009c4d535b000000000000000000000000000000000000000000000000000000003cda3351000000000000000000000000000000000000000000000000000000005d382700000000000000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000949431dc000000000000000000000000000000000000000000000000000000008c5a344500000000000000000000000000000000000000000000000000000000556e737570706f72746564207061796d617374657220666c6f770000000000000000000000000000000000000000000000000064000000800000000000000000dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000800000000000000000095ea7b3000000000000000000000000000000000000000000000000000000005361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000004400000000000000000000000020746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f0000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000000000000000ffffffffffffff3f6f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000054686520617070726f76616c4261736564207061796d617374657220696e707574206d757374206265206174206c65617374203638206279746573206c6f6e670000000000000000000000000000000000000084000000800000000000000000546865207374616e64617264207061796d617374657220696e707574206d757374206265206174206c656173742034206279746573206c6f6e67000000000000e1239cd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0456e636f64696e6720756e737570706f727465642074780000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff81000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b656363616b3235362072657475726e656420696e76616c6964206461746100848e1bfa1ac4e3576b728bda6721b215c70a7799a5b4866282a71bab954baac8000000000000000000000000000000000000000000000000fffffffffffffe1fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6ead7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a519b453ce45aaaaf3a300f5a9ec95869b4f28ab10430b572ee218c3a6a5e07d6f000000000000000000000000000000000000000000000000ffffffffffffff5f19010000000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000080800000000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39202bcce700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000002000002000000000000000000000000000000000000000000000000000000007261746f720000000000000000000000000000000000000000000000000000004661696c656420746f20706179207468652066656520746f20746865206f706575650000000000000000000000000000000000000000000000000000000000004e6f7420656e6f7567682062616c616e636520666f7220666565202b2076616c000000000000000000000000000000000000000000000001000000000000000001000001000000000000000000000000000000000000000000000000000000008f19edac323ff4d08b76da2079015d4dfbe240eda064363680b7748cc46bf8dd", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/EcAdd.yul.zbin b/src/deps/contracts/EcAdd.yul.zbin new file mode 100644 index 00000000..d7942db1 Binary files /dev/null and b/src/deps/contracts/EcAdd.yul.zbin differ diff --git a/src/deps/contracts/EcMul.yul.zbin b/src/deps/contracts/EcMul.yul.zbin new file mode 100644 index 00000000..6fd9e212 Binary files /dev/null and b/src/deps/contracts/EcMul.yul.zbin differ diff --git a/src/deps/contracts/Ecrecover.yul.zbin b/src/deps/contracts/Ecrecover.yul.zbin index 79a5729e..6ea47838 100644 Binary files a/src/deps/contracts/Ecrecover.yul.zbin and b/src/deps/contracts/Ecrecover.yul.zbin differ diff --git a/src/deps/contracts/EmptyContract.json b/src/deps/contracts/EmptyContract.json index 395b0bee..3a96fb6c 100644 --- a/src/deps/contracts/EmptyContract.json +++ b/src/deps/contracts/EmptyContract.json @@ -12,8 +12,8 @@ "type": "receive" } ], - "bytecode": "0x0000000101200190000000040000c13d0000000001000019000000110001042e0000008001000039000000400010043f0000000001000416000000000101004b0000000e0000c13d0000002001000039000001000010044300000120000004430000000501000041000000110001042e000000000100001900000012000104300000001000000432000000110001042e000000120001043000000000000000000000000200000000000000000000000000000040000001000000000000000000e3ae5ad06522be4cb84e3c6b9f4e5b012f9bd4dc67057c16fdea29a244b4a70e", - "deployedBytecode": "0x0000000101200190000000040000c13d0000000001000019000000110001042e0000008001000039000000400010043f0000000001000416000000000101004b0000000e0000c13d0000002001000039000001000010044300000120000004430000000501000041000000110001042e000000000100001900000012000104300000001000000432000000110001042e000000120001043000000000000000000000000200000000000000000000000000000040000001000000000000000000e3ae5ad06522be4cb84e3c6b9f4e5b012f9bd4dc67057c16fdea29a244b4a70e", + "bytecode": "0x0000000101200190000000040000c13d0000000001000019000000110001042e0000008001000039000000400010043f0000000001000416000000000101004b0000000e0000c13d0000002001000039000001000010044300000120000004430000000501000041000000110001042e000000000100001900000012000104300000001000000432000000110001042e0000001200010430000000000000000000000002000000000000000000000000000000400000010000000000000000004ff0391cc9c9c321f4092988da16e0f3d6058db76dd76cbe3c5ec972dbfb629f", + "deployedBytecode": "0x0000000101200190000000040000c13d0000000001000019000000110001042e0000008001000039000000400010043f0000000001000416000000000101004b0000000e0000c13d0000002001000039000001000010044300000120000004430000000501000041000000110001042e000000000100001900000012000104300000001000000432000000110001042e0000001200010430000000000000000000000002000000000000000000000000000000400000010000000000000000004ff0391cc9c9c321f4092988da16e0f3d6058db76dd76cbe3c5ec972dbfb629f", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/EventWriter.yul.zbin b/src/deps/contracts/EventWriter.yul.zbin index 4598e280..cd15a102 100644 Binary files a/src/deps/contracts/EventWriter.yul.zbin and b/src/deps/contracts/EventWriter.yul.zbin differ diff --git a/src/deps/contracts/ImmutableSimulator.json b/src/deps/contracts/ImmutableSimulator.json index 06b3f96e..42fbdcb4 100644 --- a/src/deps/contracts/ImmutableSimulator.json +++ b/src/deps/contracts/ImmutableSimulator.json @@ -58,8 +58,8 @@ "type": "function" } ], - "bytecode": "0x0002000000000002000700000000000200010000000103550000006001100270000000390010019d0000008001000039000000400010043f0000000101200190000000380000c13d0000000001000031000000040110008c000000770000413d0000000101000367000000000101043b000000e0011002700000003b0210009c000000400000613d0000003c0110009c000000770000c13d0000000001000416000000000101004b000000770000c13d000000040100008a00000000011000310000003d02000041000000400310008c000000000300001900000000030240190000003d01100197000000000401004b000000000200a0190000003d0110009c00000000010300190000000001026019000000000101004b000000770000c13d00000004010000390000000101100367000000000101043b0000003e0210009c000000770000213d0000000000100435000000200000043f000000000100001900e000c90000040f00000024020000390000000102200367000000000202043b0000000000200435000000200010043f000000000100001900e000c90000040f000000000101041a000000800010043f0000004501000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000002001000039000001000010044300000120000004430000003a01000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000000001000031000000040210008a0000003d03000041000000400420008c000000000400001900000000040340190000003d02200197000000000502004b000000000300a0190000003d0220009c00000000020400190000000002036019000000000202004b000000770000c13d00000001020003670000000403200370000000000303043b000300000003001d0000003e0330009c000000770000213d0000002403200370000000000303043b0000003f0430009c000000770000213d00000023043000390000003d05000041000000000614004b000000000600001900000000060580190000003d071001970000003d04400197000000000874004b0000000005008019000000000474013f0000003d0440009c00000000040600190000000004056019000000000404004b000000770000c13d0000000404300039000000000242034f000000000202043b000200000002001d0000003f0220009c000000770000213d000000240330003900000002020000290000000602200210000100000003001d0000000002320019000000000112004b000000790000a13d0000000001000019000000e2000104300000000001000411000080060110008c000000b40000c13d0000000201000029000000000101004b000000b20000613d00008010040000390000000002000019000700000004001d000500000002001d00000006012002100000000102000029000000000121001900000020021000390000000103000367000000000223034f000000000113034f000000000101043b000600000001001d000000000102043b000400000001001d00000003010000290000000000100435000000200000043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000000204001900e000db0000040f0000000102200190000000770000613d000000000101043b00000006020000290000000000200435000000200010043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000070200002900e000db0000040f0000000102200190000000770000613d000000000101043b0000000402000029000000000021041b000000050200002900000001022000390000000201000029000000000112004b0000000704000029000000820000413d0000000001000019000000e10001042e000000400100043d00000064021000390000004003000041000000000032043500000044021000390000004103000041000000000032043500000024021000390000002d030000390000000000320435000000420200004100000000002104350000000402100039000000200300003900000000003204350000003902000041000000390310009c0000000001028019000000400110021000000043011001c7000000e20001043000000039020000410000000003000414000000390430009c0000000003028019000000390410009c00000000010280190000004001100210000000c002300210000000000112019f00000044011001c7000080100200003900e000db0000040f0000000102200190000000d90000613d000000000101043b000000000001042d0000000001000019000000e200010430000000de002104230000000102000039000000000001042d0000000002000019000000000001042d000000e000000432000000e10001042e000000e200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000ad7e232e00000000000000000000000000000000000000000000000000000000310ab0898000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff7374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000800000000000000000eb9ee9d818b5835291e1131a796a0f1e329cd13b0374ea083ad4abc7ff111f30", - "deployedBytecode": "0x0002000000000002000700000000000200010000000103550000006001100270000000390010019d0000008001000039000000400010043f0000000101200190000000380000c13d0000000001000031000000040110008c000000770000413d0000000101000367000000000101043b000000e0011002700000003b0210009c000000400000613d0000003c0110009c000000770000c13d0000000001000416000000000101004b000000770000c13d000000040100008a00000000011000310000003d02000041000000400310008c000000000300001900000000030240190000003d01100197000000000401004b000000000200a0190000003d0110009c00000000010300190000000001026019000000000101004b000000770000c13d00000004010000390000000101100367000000000101043b0000003e0210009c000000770000213d0000000000100435000000200000043f000000000100001900e000c90000040f00000024020000390000000102200367000000000202043b0000000000200435000000200010043f000000000100001900e000c90000040f000000000101041a000000800010043f0000004501000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000002001000039000001000010044300000120000004430000003a01000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000000001000031000000040210008a0000003d03000041000000400420008c000000000400001900000000040340190000003d02200197000000000502004b000000000300a0190000003d0220009c00000000020400190000000002036019000000000202004b000000770000c13d00000001020003670000000403200370000000000303043b000300000003001d0000003e0330009c000000770000213d0000002403200370000000000303043b0000003f0430009c000000770000213d00000023043000390000003d05000041000000000614004b000000000600001900000000060580190000003d071001970000003d04400197000000000874004b0000000005008019000000000474013f0000003d0440009c00000000040600190000000004056019000000000404004b000000770000c13d0000000404300039000000000242034f000000000202043b000200000002001d0000003f0220009c000000770000213d000000240330003900000002020000290000000602200210000100000003001d0000000002320019000000000112004b000000790000a13d0000000001000019000000e2000104300000000001000411000080060110008c000000b40000c13d0000000201000029000000000101004b000000b20000613d00008010040000390000000002000019000700000004001d000500000002001d00000006012002100000000102000029000000000121001900000020021000390000000103000367000000000223034f000000000113034f000000000101043b000600000001001d000000000102043b000400000001001d00000003010000290000000000100435000000200000043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000000204001900e000db0000040f0000000102200190000000770000613d000000000101043b00000006020000290000000000200435000000200010043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000070200002900e000db0000040f0000000102200190000000770000613d000000000101043b0000000402000029000000000021041b000000050200002900000001022000390000000201000029000000000112004b0000000704000029000000820000413d0000000001000019000000e10001042e000000400100043d00000064021000390000004003000041000000000032043500000044021000390000004103000041000000000032043500000024021000390000002d030000390000000000320435000000420200004100000000002104350000000402100039000000200300003900000000003204350000003902000041000000390310009c0000000001028019000000400110021000000043011001c7000000e20001043000000039020000410000000003000414000000390430009c0000000003028019000000390410009c00000000010280190000004001100210000000c002300210000000000112019f00000044011001c7000080100200003900e000db0000040f0000000102200190000000d90000613d000000000101043b000000000001042d0000000001000019000000e200010430000000de002104230000000102000039000000000001042d0000000002000019000000000001042d000000e000000432000000e10001042e000000e200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000ad7e232e00000000000000000000000000000000000000000000000000000000310ab0898000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff7374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000800000000000000000eb9ee9d818b5835291e1131a796a0f1e329cd13b0374ea083ad4abc7ff111f30", + "bytecode": "0x0002000000000002000700000000000200010000000103550000006001100270000000390010019d0000008001000039000000400010043f0000000101200190000000380000c13d0000000001000031000000040110008c000000770000413d0000000101000367000000000101043b000000e0011002700000003b0210009c000000400000613d0000003c0110009c000000770000c13d0000000001000416000000000101004b000000770000c13d000000040100008a00000000011000310000003d02000041000000400310008c000000000300001900000000030240190000003d01100197000000000401004b000000000200a0190000003d0110009c00000000010300190000000001026019000000000101004b000000770000c13d00000004010000390000000101100367000000000101043b0000003e0210009c000000770000213d0000000000100435000000200000043f000000000100001900e000c90000040f00000024020000390000000102200367000000000202043b0000000000200435000000200010043f000000000100001900e000c90000040f000000000101041a000000800010043f0000004501000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000002001000039000001000010044300000120000004430000003a01000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000000001000031000000040210008a0000003d03000041000000400420008c000000000400001900000000040340190000003d02200197000000000502004b000000000300a0190000003d0220009c00000000020400190000000002036019000000000202004b000000770000c13d00000001020003670000000403200370000000000303043b000300000003001d0000003e0330009c000000770000213d0000002403200370000000000303043b0000003f0430009c000000770000213d00000023043000390000003d05000041000000000614004b000000000600001900000000060580190000003d071001970000003d04400197000000000874004b0000000005008019000000000474013f0000003d0440009c00000000040600190000000004056019000000000404004b000000770000c13d0000000404300039000000000242034f000000000202043b000200000002001d0000003f0220009c000000770000213d000000240330003900000002020000290000000602200210000100000003001d0000000002320019000000000112004b000000790000a13d0000000001000019000000e2000104300000000001000411000080060110008c000000b40000c13d0000000201000029000000000101004b000000b20000613d00008010040000390000000002000019000700000004001d000500000002001d00000006012002100000000102000029000000000121001900000020021000390000000103000367000000000223034f000000000113034f000000000101043b000600000001001d000000000102043b000400000001001d00000003010000290000000000100435000000200000043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000000204001900e000db0000040f0000000102200190000000770000613d000000000101043b00000006020000290000000000200435000000200010043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000070200002900e000db0000040f0000000102200190000000770000613d000000000101043b0000000402000029000000000021041b000000050200002900000001022000390000000201000029000000000112004b0000000704000029000000820000413d0000000001000019000000e10001042e000000400100043d00000064021000390000004003000041000000000032043500000044021000390000004103000041000000000032043500000024021000390000002d030000390000000000320435000000420200004100000000002104350000000402100039000000200300003900000000003204350000003902000041000000390310009c0000000001028019000000400110021000000043011001c7000000e20001043000000039020000410000000003000414000000390430009c0000000003028019000000390410009c00000000010280190000004001100210000000c002300210000000000112019f00000044011001c7000080100200003900e000db0000040f0000000102200190000000d90000613d000000000101043b000000000001042d0000000001000019000000e200010430000000de002104230000000102000039000000000001042d0000000002000019000000000001042d000000e000000432000000e10001042e000000e200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000ad7e232e00000000000000000000000000000000000000000000000000000000310ab0898000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff7374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000800000000000000000ba4e2ffd1982cc43c10400dea65494b8885fae4d25a39cc204ef5a5a87953deb", + "deployedBytecode": "0x0002000000000002000700000000000200010000000103550000006001100270000000390010019d0000008001000039000000400010043f0000000101200190000000380000c13d0000000001000031000000040110008c000000770000413d0000000101000367000000000101043b000000e0011002700000003b0210009c000000400000613d0000003c0110009c000000770000c13d0000000001000416000000000101004b000000770000c13d000000040100008a00000000011000310000003d02000041000000400310008c000000000300001900000000030240190000003d01100197000000000401004b000000000200a0190000003d0110009c00000000010300190000000001026019000000000101004b000000770000c13d00000004010000390000000101100367000000000101043b0000003e0210009c000000770000213d0000000000100435000000200000043f000000000100001900e000c90000040f00000024020000390000000102200367000000000202043b0000000000200435000000200010043f000000000100001900e000c90000040f000000000101041a000000800010043f0000004501000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000002001000039000001000010044300000120000004430000003a01000041000000e10001042e0000000001000416000000000101004b000000770000c13d0000000001000031000000040210008a0000003d03000041000000400420008c000000000400001900000000040340190000003d02200197000000000502004b000000000300a0190000003d0220009c00000000020400190000000002036019000000000202004b000000770000c13d00000001020003670000000403200370000000000303043b000300000003001d0000003e0330009c000000770000213d0000002403200370000000000303043b0000003f0430009c000000770000213d00000023043000390000003d05000041000000000614004b000000000600001900000000060580190000003d071001970000003d04400197000000000874004b0000000005008019000000000474013f0000003d0440009c00000000040600190000000004056019000000000404004b000000770000c13d0000000404300039000000000242034f000000000202043b000200000002001d0000003f0220009c000000770000213d000000240330003900000002020000290000000602200210000100000003001d0000000002320019000000000112004b000000790000a13d0000000001000019000000e2000104300000000001000411000080060110008c000000b40000c13d0000000201000029000000000101004b000000b20000613d00008010040000390000000002000019000700000004001d000500000002001d00000006012002100000000102000029000000000121001900000020021000390000000103000367000000000223034f000000000113034f000000000101043b000600000001001d000000000102043b000400000001001d00000003010000290000000000100435000000200000043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000000204001900e000db0000040f0000000102200190000000770000613d000000000101043b00000006020000290000000000200435000000200010043f00000039010000410000000002000414000000390320009c0000000001024019000000c00110021000000044011001c7000000070200002900e000db0000040f0000000102200190000000770000613d000000000101043b0000000402000029000000000021041b000000050200002900000001022000390000000201000029000000000112004b0000000704000029000000820000413d0000000001000019000000e10001042e000000400100043d00000064021000390000004003000041000000000032043500000044021000390000004103000041000000000032043500000024021000390000002d030000390000000000320435000000420200004100000000002104350000000402100039000000200300003900000000003204350000003902000041000000390310009c0000000001028019000000400110021000000043011001c7000000e20001043000000039020000410000000003000414000000390430009c0000000003028019000000390410009c00000000010280190000004001100210000000c002300210000000000112019f00000044011001c7000080100200003900e000db0000040f0000000102200190000000d90000613d000000000101043b000000000001042d0000000001000019000000e200010430000000de002104230000000102000039000000000001042d0000000002000019000000000001042d000000e000000432000000e10001042e000000e200010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000ad7e232e00000000000000000000000000000000000000000000000000000000310ab0898000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff7374656d20636f6e74726163740000000000000000000000000000000000000043616c6c61626c65206f6e6c7920627920746865206465706c6f79657220737908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000800000000000000000ba4e2ffd1982cc43c10400dea65494b8885fae4d25a39cc204ef5a5a87953deb", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/Keccak256.yul.zbin b/src/deps/contracts/Keccak256.yul.zbin index ec5b462e..143dd2af 100644 Binary files a/src/deps/contracts/Keccak256.yul.zbin and b/src/deps/contracts/Keccak256.yul.zbin differ diff --git a/src/deps/contracts/KnownCodesStorage.json b/src/deps/contracts/KnownCodesStorage.json index 66644da0..b7633d99 100644 --- a/src/deps/contracts/KnownCodesStorage.json +++ b/src/deps/contracts/KnownCodesStorage.json @@ -47,16 +47,6 @@ "internalType": "bytes32", "name": "_bytecodeHash", "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_l1PreimageHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_l1PreimageBytesLen", - "type": "uint256" } ], "name": "markBytecodeAsPublished", @@ -83,8 +73,8 @@ "type": "function" } ], - "bytecode": "0x000200000000000200010000000103550000006001100270000000700010019d0000008001000039000000400010043f00000001012001900000002e0000c13d0000000001000031000000040110008c000000800000413d0000000101000367000000000101043b000000e001100270000000720210009c000000360000613d000000730210009c0000006f0000613d000000740110009c000000800000c13d0000000001000416000000000101004b000000800000c13d000000040100008a00000000011000310000007502000041000000600310008c000000000300001900000000030240190000007501100197000000000401004b000000000200a019000000750110009c00000000010300190000000001026019000000000101004b000000800000c13d00000000010004110000800e0110008c0000008e0000c13d00000004010000390000000101100367000000000101043b01b901730000040f0000000001000019000001ba0001042e0000000001000416000000000101004b000000800000c13d0000002001000039000001000010044300000120000004430000007101000041000001ba0001042e0000000001000416000000000101004b000000800000c13d0000000004000031000000040140008a0000007502000041000000400310008c000000000300001900000000030240190000007501100197000000000501004b000000000200a019000000750110009c00000000010300190000000001026019000000000101004b000000800000c13d00000001020003670000000401200370000000000101043b000000000301004b0000000003000019000000010300c039000000000331004b000000800000c13d0000002403200370000000000503043b000000760350009c000000800000213d00000023035000390000007506000041000000000743004b0000000007000019000000000706801900000075084001970000007503300197000000000983004b0000000006008019000000000383013f000000750330009c00000000030700190000000003066019000000000303004b000000800000c13d0000000403500039000000000232034f000000000302043b000000760230009c000000800000213d000000240250003900000005053002100000000005250019000000000445004b000000800000213d01b9009a0000040f0000000001000019000001ba0001042e0000000001000416000000000101004b000000800000c13d000000040100008a00000000011000310000007502000041000000200310008c000000000300001900000000030240190000007501100197000000000401004b000000000200a019000000750110009c00000000010300190000000001026019000000000101004b000000820000613d0000000001000019000001bb0001043000000004010000390000000101100367000000000101043b000000000101041a000000400200043d00000000001204350000007001000041000000700320009c0000000001024019000000400110021000000077011001c7000001ba0001042e0000007801000041000000800010043f0000002001000039000000840010043f0000002801000039000000a40010043f0000007901000041000000c40010043f0000007a01000041000000e40010043f0000007b01000041000001bb00010430000700000000000200000000060200190000000002000411000080010220008c000001610000c13d000000000203004b000001100000613d0000000104000367000000000101004b0000000001000019000000010100c039000400000001001d000600000003001d000500000006001d000000e30000613d0000000001000413000300000001001d0000000007000019000000b00000013d0000000107700039000000000137004b000001100000813d00000005017002100000000001610019000000000114034f000000000501043b000000db015002700000007e01100197000000000205041a000000000202004b000000ad0000c13d0000007f02500197000000800220009c000001110000c13d0000008102500198000001260000613d00000040021000390000000301000029000000700310019700000000412300a900000000422100d9000000000223004b000001370000c13d000000840210009c0000013d0000813d0000000002000414000000000212004b0000010e0000413d000700000007001d0000000001100420000000000101004b0000014f0000613d000000000005041d0000000101000039000000000015041b00000070010000410000000002000414000000700320009c0000000001024019000000c00110021000000085011001c70000800d0200003900000003030000390000008604000041000000040600002901b901b40000040f00000001040003670000000101200190000000060300002900000005060000290000000707000029000000ad0000c13d0000010e0000013d0000000101000039000300000001001d0000800d01000039000200000001001d0000000301000039000100000001001d0000000002000019000000ee0000013d0000000102200039000000000132004b000001100000813d00000005012002100000000001610019000000000114034f000000000501043b000000000105041a000000000101004b000000eb0000c13d0000007f01500197000000800110009c000001110000c13d000700000002001d0000008101500198000001260000613d0000000301000029000000000015041b00000070010000410000000002000414000000700320009c0000000001024019000000c00110021000000085011001c7000000860400004100000002020000290000000103000029000000040600002901b901b40000040f00000005060000290000000603000029000000010400036700000001012001900000000702000029000000eb0000c13d0000000001000019000001bb00010430000000000001042d000000400100043d00000064021000390000008903000041000000000032043500000044021000390000008a030000410000000000320435000000240210003900000022030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000008b011001c7000001bb00010430000000400100043d00000044021000390000008c03000041000000000032043500000078020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb00010430000000820100004100000000001004350000001101000039000000040010043f0000008301000041000001bb00010430000000400100043d000000440210003900000088030000410000000000320435000000240210003900000008030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb00010430000000400100043d000000440210003900000087030000410000000000320435000000240210003900000014030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb00010430000000400100043d00000044021000390000007c03000041000000000032043500000024021000390000001f030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb000104300000000005010019000000000105041a000000000101004b0000018b0000c13d0000007f01500197000000800110009c0000018c0000c13d0000008101500198000001a10000613d0000000101000039000000000015041b00000070010000410000000002000414000000700320009c0000000001024019000000c00110021000000085011001c70000800d0200003900000003030000390000008604000041000000000600001901b901b40000040f0000000101200190000001b20000613d000000000001042d000000400100043d00000064021000390000008903000041000000000032043500000044021000390000008a030000410000000000320435000000240210003900000022030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000008b011001c7000001bb00010430000000400100043d00000044021000390000008c03000041000000000032043500000078020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb000104300000000001000019000001bb00010430000001b7002104210000000102000039000000000001042d0000000002000019000000000001042d000001b900000432000001ba0001042e000001bb00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000e516761e000000000000000000000000000000000000000000000000000000004c6314f00000000000000000000000000000000000000000000000000000000024a55db98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000002000000000000000000000000008c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c79206279207468652062797465636f646520636f6d70726573736f72000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f6164657200000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000001fffe0ffff000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000001000000000200000000000000000000000000000000000000000000000000000000000000c94722ff13eacf53547c4741dab5228353a05938ffcdd5d4a2d533ae0e6182874661696c656420746f20636861726765206761730000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000007368000000000000000000000000000000000000000000000000000000000000496e636f72726563746c7920666f726d61747465642062797465636f646548610000000000000000000000000000000000000084000000000000000000000000436f6465206c656e67746820696e20776f726473206d757374206265206f646400000000000000000000000000000000000000000000000000000000000000006c8fa1f7dcc67614aac856b1f02a91a515f4261fb1ef02e09bfc071bfcb6a8c8", - "deployedBytecode": "0x000200000000000200010000000103550000006001100270000000700010019d0000008001000039000000400010043f00000001012001900000002e0000c13d0000000001000031000000040110008c000000800000413d0000000101000367000000000101043b000000e001100270000000720210009c000000360000613d000000730210009c0000006f0000613d000000740110009c000000800000c13d0000000001000416000000000101004b000000800000c13d000000040100008a00000000011000310000007502000041000000600310008c000000000300001900000000030240190000007501100197000000000401004b000000000200a019000000750110009c00000000010300190000000001026019000000000101004b000000800000c13d00000000010004110000800e0110008c0000008e0000c13d00000004010000390000000101100367000000000101043b01b901730000040f0000000001000019000001ba0001042e0000000001000416000000000101004b000000800000c13d0000002001000039000001000010044300000120000004430000007101000041000001ba0001042e0000000001000416000000000101004b000000800000c13d0000000004000031000000040140008a0000007502000041000000400310008c000000000300001900000000030240190000007501100197000000000501004b000000000200a019000000750110009c00000000010300190000000001026019000000000101004b000000800000c13d00000001020003670000000401200370000000000101043b000000000301004b0000000003000019000000010300c039000000000331004b000000800000c13d0000002403200370000000000503043b000000760350009c000000800000213d00000023035000390000007506000041000000000743004b0000000007000019000000000706801900000075084001970000007503300197000000000983004b0000000006008019000000000383013f000000750330009c00000000030700190000000003066019000000000303004b000000800000c13d0000000403500039000000000232034f000000000302043b000000760230009c000000800000213d000000240250003900000005053002100000000005250019000000000445004b000000800000213d01b9009a0000040f0000000001000019000001ba0001042e0000000001000416000000000101004b000000800000c13d000000040100008a00000000011000310000007502000041000000200310008c000000000300001900000000030240190000007501100197000000000401004b000000000200a019000000750110009c00000000010300190000000001026019000000000101004b000000820000613d0000000001000019000001bb0001043000000004010000390000000101100367000000000101043b000000000101041a000000400200043d00000000001204350000007001000041000000700320009c0000000001024019000000400110021000000077011001c7000001ba0001042e0000007801000041000000800010043f0000002001000039000000840010043f0000002801000039000000a40010043f0000007901000041000000c40010043f0000007a01000041000000e40010043f0000007b01000041000001bb00010430000700000000000200000000060200190000000002000411000080010220008c000001610000c13d000000000203004b000001100000613d0000000104000367000000000101004b0000000001000019000000010100c039000400000001001d000600000003001d000500000006001d000000e30000613d0000000001000413000300000001001d0000000007000019000000b00000013d0000000107700039000000000137004b000001100000813d00000005017002100000000001610019000000000114034f000000000501043b000000db015002700000007e01100197000000000205041a000000000202004b000000ad0000c13d0000007f02500197000000800220009c000001110000c13d0000008102500198000001260000613d00000040021000390000000301000029000000700310019700000000412300a900000000422100d9000000000223004b000001370000c13d000000840210009c0000013d0000813d0000000002000414000000000212004b0000010e0000413d000700000007001d0000000001100420000000000101004b0000014f0000613d000000000005041d0000000101000039000000000015041b00000070010000410000000002000414000000700320009c0000000001024019000000c00110021000000085011001c70000800d0200003900000003030000390000008604000041000000040600002901b901b40000040f00000001040003670000000101200190000000060300002900000005060000290000000707000029000000ad0000c13d0000010e0000013d0000000101000039000300000001001d0000800d01000039000200000001001d0000000301000039000100000001001d0000000002000019000000ee0000013d0000000102200039000000000132004b000001100000813d00000005012002100000000001610019000000000114034f000000000501043b000000000105041a000000000101004b000000eb0000c13d0000007f01500197000000800110009c000001110000c13d000700000002001d0000008101500198000001260000613d0000000301000029000000000015041b00000070010000410000000002000414000000700320009c0000000001024019000000c00110021000000085011001c7000000860400004100000002020000290000000103000029000000040600002901b901b40000040f00000005060000290000000603000029000000010400036700000001012001900000000702000029000000eb0000c13d0000000001000019000001bb00010430000000000001042d000000400100043d00000064021000390000008903000041000000000032043500000044021000390000008a030000410000000000320435000000240210003900000022030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000008b011001c7000001bb00010430000000400100043d00000044021000390000008c03000041000000000032043500000078020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb00010430000000820100004100000000001004350000001101000039000000040010043f0000008301000041000001bb00010430000000400100043d000000440210003900000088030000410000000000320435000000240210003900000008030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb00010430000000400100043d000000440210003900000087030000410000000000320435000000240210003900000014030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb00010430000000400100043d00000044021000390000007c03000041000000000032043500000024021000390000001f030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb000104300000000005010019000000000105041a000000000101004b0000018b0000c13d0000007f01500197000000800110009c0000018c0000c13d0000008101500198000001a10000613d0000000101000039000000000015041b00000070010000410000000002000414000000700320009c0000000001024019000000c00110021000000085011001c70000800d0200003900000003030000390000008604000041000000000600001901b901b40000040f0000000101200190000001b20000613d000000000001042d000000400100043d00000064021000390000008903000041000000000032043500000044021000390000008a030000410000000000320435000000240210003900000022030000390000000000320435000000780200004100000000002104350000000402100039000000200300003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000008b011001c7000001bb00010430000000400100043d00000044021000390000008c03000041000000000032043500000078020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000007002000041000000700310009c000000000102801900000040011002100000007d011001c7000001bb000104300000000001000019000001bb00010430000001b7002104210000000102000039000000000001042d0000000002000019000000000001042d000001b900000432000001ba0001042e000001bb00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000e516761e000000000000000000000000000000000000000000000000000000004c6314f00000000000000000000000000000000000000000000000000000000024a55db98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000002000000000000000000000000008c379a00000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c79206279207468652062797465636f646520636f6d70726573736f72000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f6164657200000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000001fffe0ffff000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000001000000000200000000000000000000000000000000000000000000000000000000000000c94722ff13eacf53547c4741dab5228353a05938ffcdd5d4a2d533ae0e6182874661696c656420746f20636861726765206761730000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000007368000000000000000000000000000000000000000000000000000000000000496e636f72726563746c7920666f726d61747465642062797465636f646548610000000000000000000000000000000000000084000000000000000000000000436f6465206c656e67746820696e20776f726473206d757374206265206f646400000000000000000000000000000000000000000000000000000000000000006c8fa1f7dcc67614aac856b1f02a91a515f4261fb1ef02e09bfc071bfcb6a8c8", + "bytecode": "0x00030000000000020008000000000002000200000001035500000060011002700000006e0010019d000100000000001f0000008001000039000000400010043f00000001012001900000002e0000c13d0000000001000031000000040110008c000000b60000413d0000000201000367000000000101043b000000e001100270000000700210009c000000360000613d000000710210009c000000a50000613d000000720110009c000000b60000c13d0000000001000416000000000101004b000000b60000c13d000000040100008a00000000011000310000007302000041000000200310008c000000000300001900000000030240190000007301100197000000000401004b000000000200a019000000730110009c00000000010300190000000001026019000000000101004b000000b60000c13d00000004010000390000000201100367000000000101043b000000000101041a000000800010043f0000008801000041000001b20001042e0000000001000416000000000101004b000000b60000c13d0000002001000039000001000010044300000120000004430000006f01000041000001b20001042e0000000001000416000000000101004b000000b60000c13d0000000002000031000000040120008a0000007303000041000000400410008c000000000400001900000000040340190000007301100197000000000501004b000000000300a019000000730110009c00000000010400190000000001036019000000000101004b000000b60000c13d00000002010003670000000403100370000000000403043b000000000304004b0000000003000019000000010300c039000200000004001d000000000334004b000000b60000c13d0000002403100370000000000303043b000000740430009c000000b60000213d00000023043000390000007305000041000000000624004b0000000006000019000000000605801900000073072001970000007304400197000000000874004b0000000005008019000000000474013f000000730440009c00000000040600190000000004056019000000000404004b000000b60000c13d0000000404300039000000000441034f000000000404043b000800000004001d000000740440009c000000b60000213d000000240430003900000008030000290000000503300210000700000004001d0000000003430019000000000223004b000000b60000213d0000000002000411000080010220008c000000fa0000c13d0000000802000029000000000202004b000000f80000613d0000000202000029000000000202004b0000010c0000c13d0000000102000039000500000002001d0000800d02000039000400000002001d0000000302000039000300000002001d0000000004000019000000850000013d00000001044000390000000802000029000000000224004b000000f80000813d000000050240021000000007030000290000000002320019000000000221034f000000000502043b000000000205041a000000000202004b000000810000c13d0000007801500197000000790110009c000001660000c13d000600000004001d0000007a01500198000000c60000613d0000000501000029000000000015041b0000006e0100004100000000020004140000006e0320009c0000000001024019000000c00110021000000080011001c7000000810400004100000004020000290000000303000029000000000600001901b101a70000040f000000020100036700000001022001900000000604000029000000810000c13d000000b60000013d0000000001000416000000000101004b000000b60000c13d000000040100008a00000000011000310000007302000041000000200310008c000000000300001900000000030240190000007301100197000000000401004b000000000200a019000000730110009c00000000010300190000000001026019000000000101004b000000b80000613d0000000001000019000001b30001043000000004010000390000000201100367000000000501043b00000000010004110000800e0110008c000000d70000c13d000000000105041a000000000101004b000000f80000c13d0000007801500197000000790110009c000001660000c13d0000007a01500198000000e90000c13d000000400100043d00000044021000390000008703000041000000000032043500000076020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000077011001c7000001b300010430000000400100043d00000044021000390000008303000041000000000032043500000024021000390000001f030000390000000000320435000000760200004100000000002104350000000402100039000000200300003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000077011001c7000001b3000104300000000101000039000000000015041b0000006e0100004100000000020004140000006e0320009c0000000001024019000000c00110021000000080011001c70000800d0200003900000003030000390000008104000041000000000600001901b101a70000040f0000000101200190000000b60000613d0000000001000019000001b20001042e000000400100043d00000044021000390000007503000041000000000032043500000024021000390000001f030000390000000000320435000000760200004100000000002104350000000402100039000000200300003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000077011001c7000001b3000104300000800802000039000500000002001d0000800202000039000100000002001d0000000004000019000001160000013d00000001044000390000000802000029000000000224004b000000f80000813d000000050240021000000007030000290000000002320019000000000221034f000000000302043b000000000203041a000000000202004b000001120000c13d0000007801300197000000790110009c000001660000c13d000400000004001d000600000003001d0000007a01300198000000c60000613d0000007b010000410000000000100439000000050100002900000004001004430000006e0100004100000000020004140000006e0320009c0000000001024019000000c0011002100000007c011001c7000000010200002901b101ac0000040f00000001022001900000000602000029000000b60000613d000000000101043b000000000101004b000000b60000613d000000400400043d0000007d010000410000000000140435000000040140003900000000002104350000006e0100004100000000020004140000006e0320009c00000000020180190000006e0340009c000300000004001d00000000010440190000004001100210000000c002200210000000000112019f0000007e011001c7000000050200002901b101a70000040f000000000301001900000060033002700001006e0030019d0000006e0430019700000001022001900000017b0000613d00000003020000290000007f0120009c000001a10000813d000000400020043f00000001010000390000000605000029000000000015041b0000006e0100004100000000020004140000006e0320009c0000000001024019000000c00110021000000080011001c70000800d0200003900000003030000390000008104000041000000020600002901b101a70000040f000000020100036700000001022001900000000404000029000001120000c13d000000b60000013d000000400100043d000000640210003900000084030000410000000000320435000000440210003900000085030000410000000000320435000000240210003900000022030000390000000000320435000000760200004100000000002104350000000402100039000000200300003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000086011001c7000001b300010430000000400200043d0000001f0340018f0000000504400272000001880000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000001800000413d000000000503004b000001970000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f00000000001404350000006e0100004100000001030000310000006e0430009c00000000030180190000006e0420009c000000000102401900000040011002100000006002300210000000000112019f000001b300010430000000820100004100000000001004350000004101000039000000040010043f0000007e01000041000001b300010430000001aa002104210000000102000039000000000001042d0000000002000019000000000001042d000001af002104230000000102000039000000000001042d0000000002000019000000000001042d000001b100000432000001b20001042e000001b300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000e516761e0000000000000000000000000000000000000000000000000000000079c4f929000000000000000000000000000000000000000000000000000000004c6314f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff43616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000ffff000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000039b34c6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000000200000000000000000000000000000000000000000000000000000000000000c94722ff13eacf53547c4741dab5228353a05938ffcdd5d4a2d533ae0e6182874e487b710000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792074686520636f6d70726573736f72007368000000000000000000000000000000000000000000000000000000000000496e636f72726563746c7920666f726d61747465642062797465636f646548610000000000000000000000000000000000000084000000000000000000000000436f6465206c656e67746820696e20776f726473206d757374206265206f6464000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000000000000000000000000000006aca1b77b249f1e5f885db2cd6e516c14e81511f82dd4bd0f8bb4ac27ba50922", + "deployedBytecode": "0x00030000000000020008000000000002000200000001035500000060011002700000006e0010019d000100000000001f0000008001000039000000400010043f00000001012001900000002e0000c13d0000000001000031000000040110008c000000b60000413d0000000201000367000000000101043b000000e001100270000000700210009c000000360000613d000000710210009c000000a50000613d000000720110009c000000b60000c13d0000000001000416000000000101004b000000b60000c13d000000040100008a00000000011000310000007302000041000000200310008c000000000300001900000000030240190000007301100197000000000401004b000000000200a019000000730110009c00000000010300190000000001026019000000000101004b000000b60000c13d00000004010000390000000201100367000000000101043b000000000101041a000000800010043f0000008801000041000001b20001042e0000000001000416000000000101004b000000b60000c13d0000002001000039000001000010044300000120000004430000006f01000041000001b20001042e0000000001000416000000000101004b000000b60000c13d0000000002000031000000040120008a0000007303000041000000400410008c000000000400001900000000040340190000007301100197000000000501004b000000000300a019000000730110009c00000000010400190000000001036019000000000101004b000000b60000c13d00000002010003670000000403100370000000000403043b000000000304004b0000000003000019000000010300c039000200000004001d000000000334004b000000b60000c13d0000002403100370000000000303043b000000740430009c000000b60000213d00000023043000390000007305000041000000000624004b0000000006000019000000000605801900000073072001970000007304400197000000000874004b0000000005008019000000000474013f000000730440009c00000000040600190000000004056019000000000404004b000000b60000c13d0000000404300039000000000441034f000000000404043b000800000004001d000000740440009c000000b60000213d000000240430003900000008030000290000000503300210000700000004001d0000000003430019000000000223004b000000b60000213d0000000002000411000080010220008c000000fa0000c13d0000000802000029000000000202004b000000f80000613d0000000202000029000000000202004b0000010c0000c13d0000000102000039000500000002001d0000800d02000039000400000002001d0000000302000039000300000002001d0000000004000019000000850000013d00000001044000390000000802000029000000000224004b000000f80000813d000000050240021000000007030000290000000002320019000000000221034f000000000502043b000000000205041a000000000202004b000000810000c13d0000007801500197000000790110009c000001660000c13d000600000004001d0000007a01500198000000c60000613d0000000501000029000000000015041b0000006e0100004100000000020004140000006e0320009c0000000001024019000000c00110021000000080011001c7000000810400004100000004020000290000000303000029000000000600001901b101a70000040f000000020100036700000001022001900000000604000029000000810000c13d000000b60000013d0000000001000416000000000101004b000000b60000c13d000000040100008a00000000011000310000007302000041000000200310008c000000000300001900000000030240190000007301100197000000000401004b000000000200a019000000730110009c00000000010300190000000001026019000000000101004b000000b80000613d0000000001000019000001b30001043000000004010000390000000201100367000000000501043b00000000010004110000800e0110008c000000d70000c13d000000000105041a000000000101004b000000f80000c13d0000007801500197000000790110009c000001660000c13d0000007a01500198000000e90000c13d000000400100043d00000044021000390000008703000041000000000032043500000076020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000077011001c7000001b300010430000000400100043d00000044021000390000008303000041000000000032043500000024021000390000001f030000390000000000320435000000760200004100000000002104350000000402100039000000200300003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000077011001c7000001b3000104300000000101000039000000000015041b0000006e0100004100000000020004140000006e0320009c0000000001024019000000c00110021000000080011001c70000800d0200003900000003030000390000008104000041000000000600001901b101a70000040f0000000101200190000000b60000613d0000000001000019000001b20001042e000000400100043d00000044021000390000007503000041000000000032043500000024021000390000001f030000390000000000320435000000760200004100000000002104350000000402100039000000200300003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000077011001c7000001b3000104300000800802000039000500000002001d0000800202000039000100000002001d0000000004000019000001160000013d00000001044000390000000802000029000000000224004b000000f80000813d000000050240021000000007030000290000000002320019000000000221034f000000000302043b000000000203041a000000000202004b000001120000c13d0000007801300197000000790110009c000001660000c13d000400000004001d000600000003001d0000007a01300198000000c60000613d0000007b010000410000000000100439000000050100002900000004001004430000006e0100004100000000020004140000006e0320009c0000000001024019000000c0011002100000007c011001c7000000010200002901b101ac0000040f00000001022001900000000602000029000000b60000613d000000000101043b000000000101004b000000b60000613d000000400400043d0000007d010000410000000000140435000000040140003900000000002104350000006e0100004100000000020004140000006e0320009c00000000020180190000006e0340009c000300000004001d00000000010440190000004001100210000000c002200210000000000112019f0000007e011001c7000000050200002901b101a70000040f000000000301001900000060033002700001006e0030019d0000006e0430019700000001022001900000017b0000613d00000003020000290000007f0120009c000001a10000813d000000400020043f00000001010000390000000605000029000000000015041b0000006e0100004100000000020004140000006e0320009c0000000001024019000000c00110021000000080011001c70000800d0200003900000003030000390000008104000041000000020600002901b101a70000040f000000020100036700000001022001900000000404000029000001120000c13d000000b60000013d000000400100043d000000640210003900000084030000410000000000320435000000440210003900000085030000410000000000320435000000240210003900000022030000390000000000320435000000760200004100000000002104350000000402100039000000200300003900000000003204350000006e020000410000006e0310009c0000000001028019000000400110021000000086011001c7000001b300010430000000400200043d0000001f0340018f0000000504400272000001880000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000001800000413d000000000503004b000001970000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f00000000001404350000006e0100004100000001030000310000006e0430009c00000000030180190000006e0420009c000000000102401900000040011002100000006002300210000000000112019f000001b300010430000000820100004100000000001004350000004101000039000000040010043f0000007e01000041000001b300010430000001aa002104210000000102000039000000000001042d0000000002000019000000000001042d000001af002104230000000102000039000000000001042d0000000002000019000000000001042d000001b100000432000001b20001042e000001b300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000e516761e0000000000000000000000000000000000000000000000000000000079c4f929000000000000000000000000000000000000000000000000000000004c6314f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff43616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000ffff000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000039b34c6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000100000000000000000200000000000000000000000000000000000000000000000000000000000000c94722ff13eacf53547c4741dab5228353a05938ffcdd5d4a2d533ae0e6182874e487b710000000000000000000000000000000000000000000000000000000043616c6c61626c65206f6e6c792062792074686520636f6d70726573736f72007368000000000000000000000000000000000000000000000000000000000000496e636f72726563746c7920666f726d61747465642062797465636f646548610000000000000000000000000000000000000084000000000000000000000000436f6465206c656e67746820696e20776f726473206d757374206265206f6464000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000000000000000000000000000000000000000006aca1b77b249f1e5f885db2cd6e516c14e81511f82dd4bd0f8bb4ac27ba50922", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/L1Messenger.json b/src/deps/contracts/L1Messenger.json index 40cff765..63cc63f4 100644 --- a/src/deps/contracts/L1Messenger.json +++ b/src/deps/contracts/L1Messenger.json @@ -3,6 +3,19 @@ "contractName": "L1Messenger", "sourceName": "cache-zk/solpp-generated-contracts/L1Messenger.sol", "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "_bytecodeHash", + "type": "bytes32" + } + ], + "name": "BytecodeL1PublicationRequested", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -28,6 +41,106 @@ "name": "L1MessageSent", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "l2ShardId", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isService", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "txNumberInBlock", + "type": "uint16" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "value", + "type": "bytes32" + } + ], + "indexed": false, + "internalType": "struct L2ToL1Log", + "name": "_l2log", + "type": "tuple" + } + ], + "name": "L2ToL1LogSent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_totalL2ToL1PubdataAndStateDiffs", + "type": "bytes" + } + ], + "name": "publishPubdataAndClearState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_bytecodeHash", + "type": "bytes32" + } + ], + "name": "requestBytecodeL1Publication", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isService", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "_key", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_value", + "type": "bytes32" + } + ], + "name": "sendL2ToL1Log", + "outputs": [ + { + "internalType": "uint256", + "name": "logIdInMerkleTree", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -48,8 +161,8 @@ "type": "function" } ], - "bytecode": "0x0004000000000002000000000301001900000060033002700000005e04300197000300000041035500020000000103550000005e0030019d000100000000001f0000008001000039000000400010043f00000001012001900000004b0000c13d0000000001000031000000040110008c000000530000413d0000000201000367000000000101043b0000006001100197000000610110009c000000530000c13d0000000001000416000000000101004b000000530000c13d0000000003000031000000040130008a0000006202000041000000200410008c000000000400001900000000040240190000006201100197000000000501004b000000000200a019000000620110009c00000000010400190000000001026019000000000101004b000000530000c13d00000002020003670000000401200370000000000101043b000000630410009c000000530000213d00000023041000390000006205000041000000000634004b0000000006000019000000000605801900000062073001970000006204400197000000000874004b0000000005008019000000000474013f000000620440009c00000000040600190000000004056019000000000404004b000000530000c13d0000000404100039000000000242034f000000000202043b000000630420009c000000530000213d00000024011000390000000004120019000000000334004b000000530000213d017100550000040f000000400200043d00000000001204350000005e010000410000005e0320009c0000000001024019000000400110021000000064011001c7000001720001042e0000000001000416000000000101004b000000530000c13d0000002001000039000001000010044300000120000004430000005f01000041000001720001042e00000000010000190000017300010430000200000000000200000000080004140000000207000367000000000302004b000100000001001d000000640000613d000000000312001a0000005e041001970000010a0000413d0000000005000031000000000635004b0000010a0000413d000000000747034f0000000003350049000000650000013d0000000003000031000000650480009c000001100000813d000200000002001d0000005e0330019700000000023703df000000c001800210000000660110019700000067011001c700000000011203af00008010020000390171016c0000040f000000000301001900000060033002700001005e0030019d0000005e0330019700030000000103550000000102200190000001220000613d0000003f013000390000006802100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000630520009c0000013d0000213d00000001044001900000013d0000c13d000000400020043f00000000023104360000001f043000390000000504400272000000020b000029000000930000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000008b0000413d000000000400004b000000950000613d0000000104000031000000000443004b000001080000213d00000003050003670000001f0430018f0000000503300272000000a50000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b0000009d0000413d000000000604004b000000b40000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000001430000c13d0000005f01b00039000000200300008a0000000001310170000000000c02043300000000020004130000005e0320019700000000421300a9000000c40000613d00000000541200d9000000000334004b0000010a0000c13d0000005e0320009c000001100000213d0000000003000414000000000323004b000001080000413d0000000002200420000000000202004b000001550000613d00000000050004110000000000c5041d0000002003000039000000400200043d00000000033204360000000000b304350000001f04b0018f0000004003200039000000010600002900000002066003670000000507b00272000000df0000613d00000000080000190000000509800210000000000a930019000000000996034f000000000909043b00000000009a04350000000108800039000000000978004b000000d70000413d000000000804004b000000ee0000613d0000000507700210000000000676034f00000000077300190000000304400210000000000807043300000000084801cf000000000848022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000484019f00000000004704350000000003b3001900000000000304350000005e030000410000005e0420009c000000000203801900000040022002100000005e0410009c00000000010380190000006001100210000000000121019f00000000020004140000005e0420009c0000000002038019000000c002200210000000000112019f0000006e011001c70000800d0200003900000003030000390000006f0400004100000000060c001900020000000c001d017101670000040f00000002010000290000000102200190000001080000613d000000000001042d000000000100001900000173000104300000006c0100004100000000001004350000001101000039000000040010043f0000006d010000410000017300010430000000400100043d0000004402100039000000710300004100000000003204350000002402100039000000080300003900000000003204350000006a0200004100000000002104350000000402100039000000200300003900000000003204350000005e020000410000005e0310009c000000000102801900000040011002100000006b011001c700000173000104300000001f0430018f00000005023002720000012d0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000001260000413d000000000504004b0000013b0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000173000104300000006c0100004100000000001004350000004101000039000000040010043f0000006d010000410000017300010430000000400100043d00000044021000390000006903000041000000000032043500000024021000390000001f0300003900000000003204350000006a0200004100000000002104350000000402100039000000200300003900000000003204350000005e020000410000005e0310009c000000000102801900000040011002100000006b011001c70000017300010430000000400100043d0000004402100039000000700300004100000000003204350000002402100039000000120300003900000000003204350000006a0200004100000000002104350000000402100039000000200300003900000000003204350000005e020000410000005e0310009c000000000102801900000040011002100000006b011001c700000173000104300000016a002104210000000102000039000000000001042d0000000002000019000000000001042d0000016f002104230000000102000039000000000001042d0000000002000019000000000001042d0000017100000432000001720001042e0000017300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe06b656363616b3235362072657475726e656420696e76616c696420646174610008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000002000000000000000000000000000000000000000000000000000000000000003a36e47291f4201faf137fab081d92295bce2d53be2c6ca68ba82c7faa9ce2414661696c656420746f206275726e2067617300000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000003beb2797ae2931f91c5a92045b70a677bd8443986caa0471a58dda62141b7ad5", - "deployedBytecode": "0x0004000000000002000000000301001900000060033002700000005e04300197000300000041035500020000000103550000005e0030019d000100000000001f0000008001000039000000400010043f00000001012001900000004b0000c13d0000000001000031000000040110008c000000530000413d0000000201000367000000000101043b0000006001100197000000610110009c000000530000c13d0000000001000416000000000101004b000000530000c13d0000000003000031000000040130008a0000006202000041000000200410008c000000000400001900000000040240190000006201100197000000000501004b000000000200a019000000620110009c00000000010400190000000001026019000000000101004b000000530000c13d00000002020003670000000401200370000000000101043b000000630410009c000000530000213d00000023041000390000006205000041000000000634004b0000000006000019000000000605801900000062073001970000006204400197000000000874004b0000000005008019000000000474013f000000620440009c00000000040600190000000004056019000000000404004b000000530000c13d0000000404100039000000000242034f000000000202043b000000630420009c000000530000213d00000024011000390000000004120019000000000334004b000000530000213d017100550000040f000000400200043d00000000001204350000005e010000410000005e0320009c0000000001024019000000400110021000000064011001c7000001720001042e0000000001000416000000000101004b000000530000c13d0000002001000039000001000010044300000120000004430000005f01000041000001720001042e00000000010000190000017300010430000200000000000200000000080004140000000207000367000000000302004b000100000001001d000000640000613d000000000312001a0000005e041001970000010a0000413d0000000005000031000000000635004b0000010a0000413d000000000747034f0000000003350049000000650000013d0000000003000031000000650480009c000001100000813d000200000002001d0000005e0330019700000000023703df000000c001800210000000660110019700000067011001c700000000011203af00008010020000390171016c0000040f000000000301001900000060033002700001005e0030019d0000005e0330019700030000000103550000000102200190000001220000613d0000003f013000390000006802100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000630520009c0000013d0000213d00000001044001900000013d0000c13d000000400020043f00000000023104360000001f043000390000000504400272000000020b000029000000930000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000008b0000413d000000000400004b000000950000613d0000000104000031000000000443004b000001080000213d00000003050003670000001f0430018f0000000503300272000000a50000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b0000009d0000413d000000000604004b000000b40000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000001430000c13d0000005f01b00039000000200300008a0000000001310170000000000c02043300000000020004130000005e0320019700000000421300a9000000c40000613d00000000541200d9000000000334004b0000010a0000c13d0000005e0320009c000001100000213d0000000003000414000000000323004b000001080000413d0000000002200420000000000202004b000001550000613d00000000050004110000000000c5041d0000002003000039000000400200043d00000000033204360000000000b304350000001f04b0018f0000004003200039000000010600002900000002066003670000000507b00272000000df0000613d00000000080000190000000509800210000000000a930019000000000996034f000000000909043b00000000009a04350000000108800039000000000978004b000000d70000413d000000000804004b000000ee0000613d0000000507700210000000000676034f00000000077300190000000304400210000000000807043300000000084801cf000000000848022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000484019f00000000004704350000000003b3001900000000000304350000005e030000410000005e0420009c000000000203801900000040022002100000005e0410009c00000000010380190000006001100210000000000121019f00000000020004140000005e0420009c0000000002038019000000c002200210000000000112019f0000006e011001c70000800d0200003900000003030000390000006f0400004100000000060c001900020000000c001d017101670000040f00000002010000290000000102200190000001080000613d000000000001042d000000000100001900000173000104300000006c0100004100000000001004350000001101000039000000040010043f0000006d010000410000017300010430000000400100043d0000004402100039000000710300004100000000003204350000002402100039000000080300003900000000003204350000006a0200004100000000002104350000000402100039000000200300003900000000003204350000005e020000410000005e0310009c000000000102801900000040011002100000006b011001c700000173000104300000001f0430018f00000005023002720000012d0000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000001260000413d000000000504004b0000013b0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000173000104300000006c0100004100000000001004350000004101000039000000040010043f0000006d010000410000017300010430000000400100043d00000044021000390000006903000041000000000032043500000024021000390000001f0300003900000000003204350000006a0200004100000000002104350000000402100039000000200300003900000000003204350000005e020000410000005e0310009c000000000102801900000040011002100000006b011001c70000017300010430000000400100043d0000004402100039000000700300004100000000003204350000002402100039000000120300003900000000003204350000006a0200004100000000002104350000000402100039000000200300003900000000003204350000005e020000410000005e0310009c000000000102801900000040011002100000006b011001c700000173000104300000016a002104210000000102000039000000000001042d0000000002000019000000000001042d0000016f002104230000000102000039000000000001042d0000000002000019000000000001042d0000017100000432000001720001042e0000017300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe06b656363616b3235362072657475726e656420696e76616c696420646174610008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000002000000000000000000000000000000000000000000000000000000000000003a36e47291f4201faf137fab081d92295bce2d53be2c6ca68ba82c7faa9ce2414661696c656420746f206275726e2067617300000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000003beb2797ae2931f91c5a92045b70a677bd8443986caa0471a58dda62141b7ad5", + "bytecode": "0x0004000000000002000e00000000000200000000030100190000006003300270000002af0430019700030000004103550002000000010355000002af0030019d000100000000001f0000008003000039000000400030043f00000001012001900000004b0000c13d000400000003001d0000000001000031000000040110008c000000bb0000413d0000000201000367000000000101043b000000e001100270000002b10210009c000000530000213d000002b40210009c000000900000613d000002b50110009c000000bb0000c13d0000000001000416000000000101004b000000bb0000c13d000000040100008a0000000001100031000002b602000041000000600310008c00000000030000190000000003024019000002b601100197000000000401004b000000000200a019000002b60110009c00000000010300190000000001026019000000000101004b000000bb0000c13d00000004010000390000000201100367000000000201043b000000000102004b0000000001000019000000010100c039000000000112004b000000bb0000c13d000000400400043d0000000003000411000002f20130009c000001040000413d0000006401400039000002f30200004100000000002104350000004401400039000002f4020000410000000000210435000000240140003900000034020000390000000000210435000002c9010000410000000000140435000000040140003900000020020000390000000000210435000002af01000041000002af0240009c00000000010440190000004001100210000002d2011001c700000aba000104300000000001000416000000000101004b000000bb0000c13d000000200100003900000100001004430000012000000443000002b00100004100000ab90001042e000002b20210009c000000aa0000613d000002b30110009c000000bb0000c13d0000000001000416000000000101004b000000bb0000c13d0000000001000031000000040210008a000002b603000041000000200420008c00000000040000190000000004034019000002b602200197000000000502004b000000000300a019000002b60220009c00000000020400190000000002036019000000000202004b000000bb0000c13d00000002030003670000000402300370000000000202043b000002b70420009c000000bb0000213d0000002304200039000002b605000041000000000614004b00000000060000190000000006058019000002b607100197000002b604400197000000000874004b0000000005008019000000000474013f000002b60440009c00000000040600190000000004056019000000000404004b000000bb0000c13d0000000404200039000000000343034f000000000503043b000002b70350009c000000bb0000213d00000024062000390000000002650019000000000112004b000000bb0000213d000000000700041400000000010004140000000003000031000000000423004b000001940000813d000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba000104300000000001000416000000000101004b000000bb0000c13d000000040100008a0000000001100031000002b602000041000000200310008c00000000030000190000000003024019000002b601100197000000000401004b000000000200a019000002b60110009c00000000010300190000000001026019000000000101004b000000bb0000c13d0000000001000411000080040110008c000000fa0000c13d00000004010000390000000201100367000000000101043b0ab8094c0000040f000000000100001900000ab90001042e0000000001000416000000000101004b000000bb0000c13d0000000001000031000000040210008a000002b603000041000000200420008c00000000040000190000000004034019000002b602200197000000000502004b000000000300a019000002b60220009c00000000020400190000000002036019000000000202004b000000bd0000613d000000000100001900000aba0001043000000002020003670000000403200370000000000303043b000002b70430009c000000bb0000213d0000002304300039000002b605000041000000000614004b00000000060000190000000006058019000002b607100197000002b604400197000000000874004b0000000005008019000000000474013f000002b60440009c00000000040600190000000004056019000000000404004b000000bb0000c13d0000000404300039000000000442034f000000000404043b000800000004001d000002b70440009c000000bb0000213d0000002403300039000700000003001d00000008040000290000000003340019000000000113004b000000bb0000213d0000000001000411000080010110008c000001a80000c13d0000000801000029000000040110008c000000bb0000413d0000000701000029000000000112034f000000400300043d000000000201043b000002cc0120009c000003620000413d0000004401300039000002f1020000410000000000210435000000240130003900000014020000390000000000210435000002c9010000410000000000130435000000040130003900000020020000390000000000210435000002af01000041000002af0230009c00000000010340190000004001100210000002ca011001c700000aba00010430000002c901000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f000002f501000041000000c40010043f000002f60100004100000aba00010430000c00000003001d000d00000002001d000002bd010000410000000000140435000002af010000410000000002000414000002af0320009c0000000002018019000002af0340009c00000000010440190000004001100210000000c002200210000000000112019f000002be011001c70000800b02000039000e00000004001d0ab80aae0000040f0000000e0a00002900000000030100190000006003300270000002af03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001280000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001200000413d000000000705004b000001370000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000016e0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000002b70410009c000003660000213d0000000102200190000003660000c13d000000400010043f000000200130008c0000000d02000029000000bb0000413d00000000030a04330000ffff0130008c000000bb0000213d000e00000003001d0ab8089d0000040f00000060021000390000000c03000029000000000032043500000040021000390000000e03000029000000000032043500000020021000390000000d030000290000000000320435000000000001043500000024020000390000000202200367000000000202043b0000008003100039000000000023043500000044020000390000000202200367000000000202043b000000a00310003900000000002304350ab808a90000040f000e00000001001d0ab80a920000040f000000400100043d0000000e020000290000000000210435000002af02000041000002af0310009c00000000010280190000004001100210000002c7011001c700000ab90001042e000000400200043d0000001f0430018f00000005033002720000017b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000001730000413d000000000504004b0000018a0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000002af010000410000000103000031000002af0430009c0000000003018019000002af0420009c000000000102401900000040011002100000006002300210000000000112019f00000aba00010430000002af0410009c000001ba0000a13d000000400100043d0000004402100039000002e1030000410000000000320435000000240210003900000008030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000004402100039000002cb03000041000000000032043500000024021000390000001f030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000e00000007001d000d00000005001d0000000002230049000002af02200197000c00000006001d000002af03600197000000020330036700000000022303df000000c001100210000002b801100197000002b9011001c700000000011203af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000003470000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f043000390000000504400272000001ea0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000001e20000413d000000000400004b000001ec0000613d0000000104000031000000000443004b000000bb0000213d00000003050003670000001f0430018f0000000503300272000001fc0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000001f40000413d000000000604004b0000020b0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000005df0000c13d0000000001020433000b00000001001d00000000020004140000000e01000029000a00000002001d000000000121004b0000008a0000413d0000000201000039000900000001001d000000000301041a000000400100043d00000040021000390000000b040000290000000000420435000000200210003900000000003204350000004003000039000800000003001d0000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000101043b0000000902000029000000000012041b000002bd01000041000000400400043d000900000004001d0000000000140435000002af010000410000000002000414000002af0320009c0000000002018019000002af0340009c00000000010440190000004001100210000000c002200210000000000112019f000002be011001c70000800b020000390ab80aae0000040f000000090a00002900000000030100190000006003300270000002af03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000025e0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000002560000413d00000000090a0019000000000705004b0000026e0000613d0000000506600210000000000761034f00000000066900190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000004b20000613d0000001f01400039000000600110018f0000000002910019000000000112004b00000000010000190000000101004039000700000002001d000002b70220009c000003660000213d0000000101100190000003660000c13d0000000701000029000000400010043f000000200130008c000000bb0000413d00000000010904330000ffff0210008c000000bb0000213d0000000702000029000002bf0220009c000003660000213d0000000703000029000000c002300039000000400020043f0000000004000410000002c0024001970000006005300039000500000005001d000000000025043500000020053000390000000102000039000900000002001d000300000005001d0000000000250435000000a0023000390000000b07000029000600000002001d000000000072043500000080023000390000000008000411000400000002001d000000000082043500000000000304350000004002300039000200000002001d0000000000120435000000400200043d000000200320003900000000000304350000002105200039000002c1060000410000000000650435000000f0011002100000002205200039000000000015043500000060014002100000002404200039000000000014043500000058012000390000000000710435000000580100003900000000001204350000003801200039000100000008001d0000000000810435000002c20120009c000003660000213d0000008001200039000000400010043f000002af01000041000002af0430009c000000000301801900000040033002100000000002020433000002af0420009c00000000020180190000006002200210000000000232019f0000000003000414000002af0430009c0000000001034019000000c001100210000000000121019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000201043b000000400100043d0000004003100039000000000400041a00000000002304350000002002100039000000000042043500000008030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000101043b000000000010041b0000000901000029000000000101041a000000010200008a000000000221004b0000008a0000613d00000001011000390000000903000029000000000013041b00000007010000290000000001010433000000ff0110018f000000400200043d000000000112043600000003040000290000000004040433000000000404004b0000000004000019000000010400c0390000000000410435000000020100002900000000010104330000ffff0110018f0000004004200039000000000014043500000005010000290000000001010433000002c00110019700000060042000390000000000140435000000040100002900000000010104330000008004200039000000000014043500000006010000290000000001010433000000a0042000390000000000140435000002af01000041000002af0420009c00000000020180190000000005000414000002af0450009c00000000010540190000004002200210000000c001100210000000000121019f000002c3011001c70000800d02000039000002c4040000410ab80aa90000040f0000000d030000290000000101200190000000bb0000613d0000005c023000390000000001000413000002af0310019700000000412300a9000002c502200197000002c50410019700000000422400d9000000000223004b0000000e020000290000008a0000c13d0000000a030000290000000002320049000000a001100039000000000121001a0000008a0000413d000002af0210009c000001960000213d0000000002100420000000400100043d000000000202004b000006e70000c13d0000004402100039000002c8030000410000000000320435000000240210003900000014030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000001f0430018f0000000502300272000003520000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000034b0000413d000000000504004b000003600000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000300000002001d000b00000003001d000002cd0130009c0000036c0000a13d000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba000104300000000307000029000000e0067002700000000b02000029000002ce01200041000000400010043f0000080001000039000900000001001d000000000512043600000000010000310000000201100367000000000200001900000005032002100000000004350019000000000331034f000000000303043b00000000003404350000000102200039000008000320008c000003770000413d000a00000005001d0000000402000039000002b90170009c0000000007000019000600000006001d000003e90000813d000d00000002001d000000000100041a000000000117004b000004820000c13d0000000301000029000002d30110009c0000000b030000290000000a0400002900000006050000290000039a0000213d0000000001030433000000000151004b000003e30000a13d00000005015002100000000001410019000002d40200004100000000002104350000000101500039000007ff0250008c00000000050100190000038f0000413d0000004001000039000c00000001001d0000801001000039000600000001001d0000000901000029000500000001001d0000000101100270000900000001001d000000000500001900000000010304330000000102500210000000000321004b000003e30000a13d00000001022001bf000000000121004b000003e30000a13d00000005012002100000000001410019000e00000005001d0000000602500210000000000242001900000000030204330000000002010433000000400100043d00000040041000390000000000240435000000200210003900000000003204350000000c030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700000006020000290ab80aae0000040f0000000102200190000000bb0000613d0000000b0300002900000000020304330000000e05000029000000000252004b0000000a04000029000003e30000a13d00000005025002100000000002420019000000000101043b000000000012043500000001055000390000000901000029000000000115004b000003a30000413d0000000501000029000000030110008c0000039e0000213d0000000001030433000000000101004b000004d80000c13d000002ef0100004100000000001004350000003201000039000000040010043f000002f00100004100000aba000104300000000401000039000000590200008a000500000002001d0000000007000019000000000600001900000058031000390000000802000029000d00000003001d000000000223004b000000bb0000213d000000070200002900000000022100190000000001000414000002af032001970000000504000029000000000442004b0000008a0000213d00000058022000390000000004000031000000000524004b0000008a0000413d000c00000007001d000e00000006001d0000000203300367000002cf0510009c000001960000813d0000000002240049000002af0220019700000000022303df000000c001100210000002b801100197000002b9011001c700000000011203af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000004970000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c0000000e09000029000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f0430003900000005044002720000000c0a000029000004300000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004280000413d000000000400004b000004320000613d0000000104000031000000000443004b000000bb0000213d00000003040003670000000505300272000004410000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000004390000413d0000001f03300190000004500000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001010433000000200110008c000005df0000c13d0000000b010000290000000001010433000000000191004b0000000a03000029000003e30000a13d0000000501900210000000000131001900000000020204330000000000210435000000400100043d00000040031000390000000000230435000000400200003900000000022104360000000000a20435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000e0600002900000001022001900000000602000029000000bb0000613d000000000701043b0000000106600039000000000126004b0000000d020000290000000001020019000003ee0000413d000003850000013d000000400100043d0000006402100039000002d00300004100000000003204350000004402100039000002d103000041000000000032043500000024021000390000003c030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d2011001c700000aba000104300000001f0430018f0000000502300272000004a20000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000049b0000413d000000000504004b000004b00000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000000400200043d0000001f0430018f0000000503300272000004bf0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004b70000413d000000000504004b000004ce0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000002af010000410000000103000031000002af0430009c0000000003018019000002af0420009c000000000102401900000040011002100000006002300210000000000112019f00000aba00010430000000050100008a000900000001001d0000000d02000029000000000112004b0000008a0000213d0000000d0100002900000004031000390000000801000029000000000113004b000000bb0000213d0000000a010000290000000001010433000500000001001d00000007010000290000000d0200002900000000011200190000000201100367000000000101043b000002b90210009c0000000007000019000005450000813d0000000201000039000300000001001d000000000101041a000000000117004b000005f10000c13d0000000901000029000000000113004b0000008a0000213d00000004023000390000000801000029000e00000002001d000000000112004b000000bb0000213d000000070100002900000000011300190000000201100367000000000101043b000002b90210009c000b00000000001d000006240000813d0000000301000039000d00000001001d000000000101041a0000000b02000029000000000112004b000006cf0000c13d00000008010000290000000e02000029000000000112004b000003e30000813d00000007010000290000000e0200002900000000011200190000000203000367000000000213034f000000000202043b000002e702200197000002c10220009c0000072e0000c13d00000009020000290000000e04000029000000000224004b0000008a0000213d0000000e0200002900000004022000390000000804000029000000000442004b000000bb0000213d0000000101100039000000000113034f000000000101043b0000000804000029000000000442004b000003e30000813d000000e80110027000000007040000290000000002420019000000000423034f0000000e020000290000000502200039000000000521001a000c00000005001d000000000404043b0000008a0000413d00000008050000290000000c06000029000000000556004b000000bb0000213d0000000c05000029000002ea0550009c000007a60000413d000000400100043d0000004402100039000002ee030000410000000000320435000002c902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000e001100270000a00000001001d0000000007000019000e00000000001d0000000901000029000000000113004b0000008a0000213d00000004013000390000000802000029000000000221004b000000bb0000213d000000070200002900000000022300190000000202200367000000000202043b000000e002200270000000000612001a0000008a0000413d0000000803000029000000000336004b000000bb0000213d000000070300002900000000033100190000000001000414000000000232001a000002af043001970000008a0000413d0000000003000031000000000523004b0000008a0000413d000d00000007001d000b00000006001d0000000204400367000002af0510009c000001960000213d0000000002230049000002af0220019700000000022403df000000c001100210000002b801100197000002b9011001c700000000011203af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000006090000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f0430003900000005044002720000000d09000029000005940000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000058c0000413d000000000400004b000005960000613d0000000104000031000000000443004b000000bb0000213d00000003040003670000000505300272000005a50000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b0000059d0000413d0000001f03300190000005b40000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001010433000000200110008c000005df0000c13d0000000002020433000000400100043d00000040031000390000000000230435000000200210003900000000009204350000000c030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f00000001022001900000000b03000029000000bb0000613d000000000701043b0000000e0200002900000001022000390000000a01000029000e00000002001d000000000112004b000005490000413d000004ed0000013d000000400100043d0000004402100039000002d503000041000000000032043500000024021000390000001f030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000008402100039000002d60300004100000000003204350000006402100039000002d70300004100000000003204350000004402100039000002d8030000410000000000320435000000240210003900000044030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d9011001c700000aba000104300000001f0430018f0000000502300272000006140000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000060d0000413d000000000504004b000006220000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000000e001100270000600000001001d000b00000000001d000a00000000001d00000009010000290000000e02000029000000000112004b0000008a0000213d0000000e0100002900000004011000390000000802000029000000000221004b000000bb0000213d00000007020000290000000e0300002900000000022300190000000202200367000000000202043b000000e003200270000d00000003001d000000000313001a000e00000003001d0000008a0000413d00000008030000290000000e04000029000000000334004b000000bb0000213d000002da03200198000007430000c13d000002dc0320009c000007550000813d000002dd02200198000007670000613d0000000702000029000000000321001900000000010004140000000d02000029000000000232001a000002af043001970000008a0000413d0000000003000031000000000523004b0000008a0000413d0000000204400367000002af0510009c000001960000213d0000000002230049000002af0220019700000000022403df000000c001100210000002b801100197000002b9011001c700000000011203af00000002020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000007790000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f0430003900000005044002720000067d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000006750000413d000000000400004b0000067f0000613d0000000104000031000000000443004b000000bb0000213d000000030400036700000005053002720000068e0000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000006860000413d0000001f033001900000069d0000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001010433000000200110008c000007940000c13d0000000001020433000002df011001970000000d02000029000000db02200210000002e002200197000000000112019f000002c1021001c7000000400100043d0000004003100039000000000023043500000020021000390000000b0300002900000000003204350000000c030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000101043b000b00000001001d0000000a0200002900000001022000390000000601000029000a00000002001d000000000112004b000006280000413d000005010000013d000000400100043d0000008402100039000002e40300004100000000003204350000006402100039000002e50300004100000000003204350000004402100039000002e603000041000000000032043500000024021000390000005e030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d9011001c700000aba00010430000000200200003900000000022104360000000d0500002900000000005204350000001f0350018f00000040021000390000000c0400002900000002044003670000000505500272000006fa0000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000006f20000413d000000000603004b000007090000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000d03000029000000000232001900000000000204350000005f02300039000000200300008a000000000232016f000002af03000041000002af0410009c00000000010380190000004001100210000002af0420009c00000000020380190000006002200210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c70000800d020000390000000303000039000002c60400004100000001050000290000000b060000290ab80aa90000040f0000000101200190000000bb0000613d000000400100043d0000000b020000290000000000210435000002af02000041000002af0310009c00000000010280190000004001100210000002c7011001c700000ab90001042e000000400100043d0000006402100039000002e80300004100000000003204350000004402100039000002e9030000410000000000320435000000240210003900000027030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d2011001c700000aba00010430000000400100043d0000004402100039000002db030000410000000000320435000000240210003900000003030000290000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000004402100039000002e3030000410000000000320435000000240210003900000003030000290000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000004402100039000002e2030000410000000000320435000000240210003900000003030000290000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000001f0430018f0000000502300272000007840000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000077d0000413d000000000504004b000007920000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000000400100043d0000004402100039000002de030000410000000000320435000000240210003900000019030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000000c0500002900000004055000390000000806000029000000000665004b000000bb0000213d00000007060000290000000c070000290000000006670019000000000363034f000000000703043b000000e00670027000000110836000c9000002b90770009c000007b70000413d00000000876300d9000001100770008c0000008a0000c13d00000000085300190000000807000029000b00000008001d000000000778004b000000bb0000213d000000f804400270000000400900043d00000044079000390000000408000029000000000087043500000024079000390000000000470435000002eb0400004100000000004904350000008404900039000000000034043500000004049000390000000000640435000000070600002900000000076500190000001f0630018f000e00000009001d000000a40590003900000002087003670000000509300272000007da0000613d0000000007000019000000050a700210000000000ba50019000000000aa8034f000000000a0a043b0000000000ab04350000000107700039000000000a97004b000007d20000413d00000007070000290000000007720019000000000206004b000007eb0000613d0000000502900210000000000828034f00000000022500190000000306600210000000000902043300000000096901cf000000000969022f000000000808043b0000010006600089000000000868022f00000000066801cf000000000696019f0000000000620435000000000235001900000000000204350000001f02300039000002ec02200197000000000225001900000000034200490000000e04000029000000640440003900000000003404350000001f0310018f000000000212043600000002047003670000000505100272000008020000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000007fa0000413d000000000603004b000008110000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f0000000000350435000000000312001900000000000304350000001f01100039000002ed011001970000000e0400002900000000014100490000000001210019000002af02000041000002af0340009c000000000302001900000000030440190000004003300210000002af0410009c00000000010280190000006001100210000000000131019f0000000003000414000002af0430009c0000000002034019000000c002200210000000000112019f0000800e020000390ab80aa90000040f00000000030100190000006003300270000002af03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000083b0000613d000000000700001900000005087002100000000e090000290000000009890019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000008320000413d000000000705004b0000084b0000613d0000000506600210000000000761034f0000000e0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000008770000613d0000001f01400039000000600210018f0000000e010000290000000001120019000000000221004b00000000020000190000000102004039000002b70410009c000003660000213d0000000102200190000003660000c13d000000400010043f000000200130008c000000bb0000413d00000008010000290000000b02000029000000000112004b000000000100001900000001010060390000000e020000290000000002020433000e00000002001d0ab809ce0000040f0000000501000029000000000010041d00000007010000290000000c020000290ab809e60000040f0000000102000039000000000012041d00000003010000290000000e03000029000000000031041d000000000000041b000000000002041b000000000001041b0000000d01000029000000000001041b000000000100001900000ab90001042e000000400200043d0000001f0430018f0000000503300272000008840000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000087c0000413d000000000504004b000008930000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000002af010000410000000103000031000002af0430009c0000000003018019000002af0420009c000000000102401900000040011002100000006002300210000000000112019f00000aba00010430000000400100043d000002f70210009c000008a30000813d000000c002100039000000400020043f000000000001042d000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba0001043000070000000000020000000082010434000000f80320021000000040071000390000006006100039000000a005100039000200000001001d0000008002100039000600000002001d0000000004020433000700000005001d0000000005050433000500000006001d0000000006060433000400000007001d0000000007070433000300000008001d0000000008080433000000400100043d00000020021000390000000000320435000002c103000041000000000808004b000000000300601900000021081000390000000000380435000000f00370021000000022071000390000000000370435000000600360021000000024061000390000000000360435000000580310003900000000005304350000003803100039000000000043043500000058030000390000000000310435000002f80310009c000009400000813d0000008003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f00000001022001900000093e0000613d000000000201043b000000400100043d0000004003100039000000000400041a00000000002304350000002002100039000000000042043500000040030000390000000000310435000002bb0310009c000009400000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f00000001022001900000093e0000613d000000000101043b000000000010041b0000000103000039000000000203041a000000010100008a000000000112004b000009460000613d000100000002001d0000000101200039000000000013041b00000002010000290000000001010433000000ff0110018f000000400200043d000000000112043600000003040000290000000004040433000000000404004b0000000004000019000000010400c0390000000000410435000000040100002900000000010104330000ffff0110018f0000004004200039000000000014043500000005010000290000000001010433000002c00110019700000060042000390000000000140435000000060100002900000000010104330000008004200039000000000014043500000007010000290000000001010433000000a0042000390000000000140435000002af01000041000002af0420009c00000000020180190000000004000414000002af0540009c00000000010440190000004002200210000000c001100210000000000121019f000002c3011001c70000800d02000039000002c4040000410ab80aa90000040f00000001012001900000093e0000613d0000000101000029000000000001042d000000000100001900000aba00010430000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba00010430000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba0001043000020000000000020000000302000039000100000002001d000000000302041a000000400500043d0000004002500039000200000001001d00000000001204350000002002500039000000000032043500000040030000390000000000350435000002f90350009c000009a50000813d0000006003500039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001050433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000009a30000613d000000000101043b0000000102000029000000000012041b0000000001000413000002af031001970000000206000029000000e0016002700000ffff0210018f000000050120021000000004041001bf00000000514300a900000000544100d9000000000343004b0000099d0000c13d0000000102200270000000010320003900000007423000c9000000075420011a000000000343004b0000099d0000c13d0000000001210019000002fa0210009c000009ab0000813d00000028011000390000000002100420000000400100043d000000000202004b000009bd0000613d0000000000610435000002af020000410000000003000414000002af0430009c0000000003028019000002af0410009c00000000010280190000004001100210000000c002300210000000000112019f000002fb011001c70000800d020000390000000103000039000002fc040000410ab80aa90000040f0000000101200190000009a30000613d000000000001042d000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba00010430000000000100001900000aba00010430000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba00010430000000400100043d0000004402100039000002e1030000410000000000320435000000240210003900000008030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000004402100039000002c8030000410000000000320435000000240210003900000014030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000000101004b000009d10000613d000000000001042d000000400100043d0000006402100039000002fd0300004100000000003204350000004402100039000002fe03000041000000000032043500000024021000390000002a030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d2011001c700000aba0001043000000000030004140000000004120019000000000224004b00000000050000190000000105004039000002af02100197000000010150019000000a450000c13d0000000001000031000000000541004b00000a450000413d0000000202200367000002cf0530009c00000a4b0000813d0000000001410049000002af0110019700000000011203df000000c002300210000002b802200197000002b9022001c700000000012103af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af033001970003000000010355000000010220019000000a5d0000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c00000a780000213d000000010440019000000a780000c13d000000400020043f00000000023104360000001f04300039000000050440027200000a1f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000a170000413d000000000400004b00000a210000613d0000000104000031000000000443004b00000a7e0000213d00000003050003670000001f0430018f000000050330027200000a310000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000a290000413d000000000604004b00000a400000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000a800000c13d0000000001020433000000000001042d000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba00010430000000400100043d0000004402100039000002e1030000410000000000320435000000240210003900000008030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000001f0430018f000000050230027200000a680000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000a610000413d000000000504004b00000a760000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba00010430000000000100001900000aba00010430000000400100043d0000004402100039000002d503000041000000000032043500000024021000390000001f030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba0001043000000078010000390000000001100420000000000101004b00000a970000613d000000000001042d000000400100043d0000004402100039000002c8030000410000000000320435000000240210003900000014030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba0001043000000aac002104210000000102000039000000000001042d0000000002000019000000000001042d00000ab1002104230000000102000039000000000001042d0000000002000019000000000001042d00000ab6002104230000000102000039000000000001042d0000000002000019000000000001042d00000ab80000043200000ab90001042e00000aba00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000628b636d00000000000000000000000000000000000000000000000000000000628b636e0000000000000000000000000000000000000000000000000000000062f84b240000000000000000000000000000000000000000000000000000000039b34c6e0000000000000000000000000000000000000000000000000000000056079ac88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffff9f02000000000000000000000000000000000000000000000000000000000000008ac84c0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f02000000000000000000000000000000000000c000000000000000000000000027fe8c0b49f49507b9d4fe5968c9f49edfe5c9df277d433a07a0717ede97638d00000000000000000000000000000000ffffffffffffffffffffffffffffffff3a36e47291f4201faf137fab081d92295bce2d53be2c6ca68ba82c7faa9ce24100000000000000000000000000000000000000200000000000000000000000004661696c656420746f206368617267652067617300000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f61646572000000080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffeffdf000000000000000000000000000000000000000000000000000000000001002000000000000000000000000000000000000000000000000000000001000000006e6f7420657175616c20746f20636861696e65644c6f677348617368000000007265636f6e7374727563746564436861696e65644c6f677348617368206973200000000000000000000000000000000000000084000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff72abee45b59e344af8a6e520241c4744aff26ed411f4c4b00f8af09adada43ba6b656363616b3235362072657475726e656420696e76616c69642064617461004861736800000000000000000000000000000000000000000000000000000000206973206e6f7420657175616c20746f20636861696e65644d657373616765737265636f6e7374727563746564436861696e65644d657373616765734861736800000000000000000000000000000000000000a40000000000000000000000000000001f00000000000000000000000000000000000000000000000000000000706f000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000007368612072657475726e656420696e76616c696420646174610000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff06ffffff000000000000000000000000000000000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000007072000000000000000000000000000000000000000000000000000000000000707000000000000000000000000000000000000000000000000000000000000061696e65644c3142797465636f64657352657665616c44617461486173680000657665616c4461746148617368206973206e6f7420657175616c20746f2063687265636f6e7374727563746564436861696e65644c3142797465636f64657352ff0000000000000000000000000000000000000000000000000000000000000069736d61746368000000000000000000000000000000000000000000000000007374617465206469666620636f6d7072657373696f6e2076657273696f6e206d000000000000000000000000000000000000000000000000000000000007ef416006d8b500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffe00000000000000000000000000000000000000000000000000000000001ffffe04c31204d657373656e676572207075626461746120697320746f6f206c6f6e674e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000546f6f206d616e79204c322d3e4c31206c6f677300000000000000000000000000000000000000000000000000000000000000000000000000000000000100006f2062652073797374656d20636f6e747261637400000000000000000000000054686973206d6574686f642072657175697265207468652063616c6c65722074496e617070726f7072696174652063616c6c65720000000000000000000000000000000000000000000000000000000000000064000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff40000000000000000000000000000000000000000000000000ffffffffffffff80000000000000000000000000000000000000000000000000ffffffffffffffa000000000000000000000000000000000000000000000000000000000ffffffd80200000000000000000000000000000000000020000000000000000000000000480d3c9f727b5e5c1203d4c61fb185d37f08e6b2dc5e9bbf98591b1a7addf57c64617461206172726179000000000000000000000000000000000000000000004578747261206461746120696e2074686520746f74616c4c32546f4c315075620000000000000000000000000000000000000000000000000000000000000000918be26e3402038993f44a7d3e3c4373187a68986a393c0b39192bb13d9ba4c6", + "deployedBytecode": "0x0004000000000002000e00000000000200000000030100190000006003300270000002af0430019700030000004103550002000000010355000002af0030019d000100000000001f0000008003000039000000400030043f00000001012001900000004b0000c13d000400000003001d0000000001000031000000040110008c000000bb0000413d0000000201000367000000000101043b000000e001100270000002b10210009c000000530000213d000002b40210009c000000900000613d000002b50110009c000000bb0000c13d0000000001000416000000000101004b000000bb0000c13d000000040100008a0000000001100031000002b602000041000000600310008c00000000030000190000000003024019000002b601100197000000000401004b000000000200a019000002b60110009c00000000010300190000000001026019000000000101004b000000bb0000c13d00000004010000390000000201100367000000000201043b000000000102004b0000000001000019000000010100c039000000000112004b000000bb0000c13d000000400400043d0000000003000411000002f20130009c000001040000413d0000006401400039000002f30200004100000000002104350000004401400039000002f4020000410000000000210435000000240140003900000034020000390000000000210435000002c9010000410000000000140435000000040140003900000020020000390000000000210435000002af01000041000002af0240009c00000000010440190000004001100210000002d2011001c700000aba000104300000000001000416000000000101004b000000bb0000c13d000000200100003900000100001004430000012000000443000002b00100004100000ab90001042e000002b20210009c000000aa0000613d000002b30110009c000000bb0000c13d0000000001000416000000000101004b000000bb0000c13d0000000001000031000000040210008a000002b603000041000000200420008c00000000040000190000000004034019000002b602200197000000000502004b000000000300a019000002b60220009c00000000020400190000000002036019000000000202004b000000bb0000c13d00000002030003670000000402300370000000000202043b000002b70420009c000000bb0000213d0000002304200039000002b605000041000000000614004b00000000060000190000000006058019000002b607100197000002b604400197000000000874004b0000000005008019000000000474013f000002b60440009c00000000040600190000000004056019000000000404004b000000bb0000c13d0000000404200039000000000343034f000000000503043b000002b70350009c000000bb0000213d00000024062000390000000002650019000000000112004b000000bb0000213d000000000700041400000000010004140000000003000031000000000423004b000001940000813d000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba000104300000000001000416000000000101004b000000bb0000c13d000000040100008a0000000001100031000002b602000041000000200310008c00000000030000190000000003024019000002b601100197000000000401004b000000000200a019000002b60110009c00000000010300190000000001026019000000000101004b000000bb0000c13d0000000001000411000080040110008c000000fa0000c13d00000004010000390000000201100367000000000101043b0ab8094c0000040f000000000100001900000ab90001042e0000000001000416000000000101004b000000bb0000c13d0000000001000031000000040210008a000002b603000041000000200420008c00000000040000190000000004034019000002b602200197000000000502004b000000000300a019000002b60220009c00000000020400190000000002036019000000000202004b000000bd0000613d000000000100001900000aba0001043000000002020003670000000403200370000000000303043b000002b70430009c000000bb0000213d0000002304300039000002b605000041000000000614004b00000000060000190000000006058019000002b607100197000002b604400197000000000874004b0000000005008019000000000474013f000002b60440009c00000000040600190000000004056019000000000404004b000000bb0000c13d0000000404300039000000000442034f000000000404043b000800000004001d000002b70440009c000000bb0000213d0000002403300039000700000003001d00000008040000290000000003340019000000000113004b000000bb0000213d0000000001000411000080010110008c000001a80000c13d0000000801000029000000040110008c000000bb0000413d0000000701000029000000000112034f000000400300043d000000000201043b000002cc0120009c000003620000413d0000004401300039000002f1020000410000000000210435000000240130003900000014020000390000000000210435000002c9010000410000000000130435000000040130003900000020020000390000000000210435000002af01000041000002af0230009c00000000010340190000004001100210000002ca011001c700000aba00010430000002c901000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f000002f501000041000000c40010043f000002f60100004100000aba00010430000c00000003001d000d00000002001d000002bd010000410000000000140435000002af010000410000000002000414000002af0320009c0000000002018019000002af0340009c00000000010440190000004001100210000000c002200210000000000112019f000002be011001c70000800b02000039000e00000004001d0ab80aae0000040f0000000e0a00002900000000030100190000006003300270000002af03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001280000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001200000413d000000000705004b000001370000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000016e0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000002b70410009c000003660000213d0000000102200190000003660000c13d000000400010043f000000200130008c0000000d02000029000000bb0000413d00000000030a04330000ffff0130008c000000bb0000213d000e00000003001d0ab8089d0000040f00000060021000390000000c03000029000000000032043500000040021000390000000e03000029000000000032043500000020021000390000000d030000290000000000320435000000000001043500000024020000390000000202200367000000000202043b0000008003100039000000000023043500000044020000390000000202200367000000000202043b000000a00310003900000000002304350ab808a90000040f000e00000001001d0ab80a920000040f000000400100043d0000000e020000290000000000210435000002af02000041000002af0310009c00000000010280190000004001100210000002c7011001c700000ab90001042e000000400200043d0000001f0430018f00000005033002720000017b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000001730000413d000000000504004b0000018a0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000002af010000410000000103000031000002af0430009c0000000003018019000002af0420009c000000000102401900000040011002100000006002300210000000000112019f00000aba00010430000002af0410009c000001ba0000a13d000000400100043d0000004402100039000002e1030000410000000000320435000000240210003900000008030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000004402100039000002cb03000041000000000032043500000024021000390000001f030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000e00000007001d000d00000005001d0000000002230049000002af02200197000c00000006001d000002af03600197000000020330036700000000022303df000000c001100210000002b801100197000002b9011001c700000000011203af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000003470000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f043000390000000504400272000001ea0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000001e20000413d000000000400004b000001ec0000613d0000000104000031000000000443004b000000bb0000213d00000003050003670000001f0430018f0000000503300272000001fc0000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000001f40000413d000000000604004b0000020b0000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c000005df0000c13d0000000001020433000b00000001001d00000000020004140000000e01000029000a00000002001d000000000121004b0000008a0000413d0000000201000039000900000001001d000000000301041a000000400100043d00000040021000390000000b040000290000000000420435000000200210003900000000003204350000004003000039000800000003001d0000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000101043b0000000902000029000000000012041b000002bd01000041000000400400043d000900000004001d0000000000140435000002af010000410000000002000414000002af0320009c0000000002018019000002af0340009c00000000010440190000004001100210000000c002200210000000000112019f000002be011001c70000800b020000390ab80aae0000040f000000090a00002900000000030100190000006003300270000002af03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000025e0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000002560000413d00000000090a0019000000000705004b0000026e0000613d0000000506600210000000000761034f00000000066900190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000004b20000613d0000001f01400039000000600110018f0000000002910019000000000112004b00000000010000190000000101004039000700000002001d000002b70220009c000003660000213d0000000101100190000003660000c13d0000000701000029000000400010043f000000200130008c000000bb0000413d00000000010904330000ffff0210008c000000bb0000213d0000000702000029000002bf0220009c000003660000213d0000000703000029000000c002300039000000400020043f0000000004000410000002c0024001970000006005300039000500000005001d000000000025043500000020053000390000000102000039000900000002001d000300000005001d0000000000250435000000a0023000390000000b07000029000600000002001d000000000072043500000080023000390000000008000411000400000002001d000000000082043500000000000304350000004002300039000200000002001d0000000000120435000000400200043d000000200320003900000000000304350000002105200039000002c1060000410000000000650435000000f0011002100000002205200039000000000015043500000060014002100000002404200039000000000014043500000058012000390000000000710435000000580100003900000000001204350000003801200039000100000008001d0000000000810435000002c20120009c000003660000213d0000008001200039000000400010043f000002af01000041000002af0430009c000000000301801900000040033002100000000002020433000002af0420009c00000000020180190000006002200210000000000232019f0000000003000414000002af0430009c0000000001034019000000c001100210000000000121019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000201043b000000400100043d0000004003100039000000000400041a00000000002304350000002002100039000000000042043500000008030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000101043b000000000010041b0000000901000029000000000101041a000000010200008a000000000221004b0000008a0000613d00000001011000390000000903000029000000000013041b00000007010000290000000001010433000000ff0110018f000000400200043d000000000112043600000003040000290000000004040433000000000404004b0000000004000019000000010400c0390000000000410435000000020100002900000000010104330000ffff0110018f0000004004200039000000000014043500000005010000290000000001010433000002c00110019700000060042000390000000000140435000000040100002900000000010104330000008004200039000000000014043500000006010000290000000001010433000000a0042000390000000000140435000002af01000041000002af0420009c00000000020180190000000005000414000002af0450009c00000000010540190000004002200210000000c001100210000000000121019f000002c3011001c70000800d02000039000002c4040000410ab80aa90000040f0000000d030000290000000101200190000000bb0000613d0000005c023000390000000001000413000002af0310019700000000412300a9000002c502200197000002c50410019700000000422400d9000000000223004b0000000e020000290000008a0000c13d0000000a030000290000000002320049000000a001100039000000000121001a0000008a0000413d000002af0210009c000001960000213d0000000002100420000000400100043d000000000202004b000006e70000c13d0000004402100039000002c8030000410000000000320435000000240210003900000014030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000001f0430018f0000000502300272000003520000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000034b0000413d000000000504004b000003600000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000300000002001d000b00000003001d000002cd0130009c0000036c0000a13d000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba000104300000000307000029000000e0067002700000000b02000029000002ce01200041000000400010043f0000080001000039000900000001001d000000000512043600000000010000310000000201100367000000000200001900000005032002100000000004350019000000000331034f000000000303043b00000000003404350000000102200039000008000320008c000003770000413d000a00000005001d0000000402000039000002b90170009c0000000007000019000600000006001d000003e90000813d000d00000002001d000000000100041a000000000117004b000004820000c13d0000000301000029000002d30110009c0000000b030000290000000a0400002900000006050000290000039a0000213d0000000001030433000000000151004b000003e30000a13d00000005015002100000000001410019000002d40200004100000000002104350000000101500039000007ff0250008c00000000050100190000038f0000413d0000004001000039000c00000001001d0000801001000039000600000001001d0000000901000029000500000001001d0000000101100270000900000001001d000000000500001900000000010304330000000102500210000000000321004b000003e30000a13d00000001022001bf000000000121004b000003e30000a13d00000005012002100000000001410019000e00000005001d0000000602500210000000000242001900000000030204330000000002010433000000400100043d00000040041000390000000000240435000000200210003900000000003204350000000c030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700000006020000290ab80aae0000040f0000000102200190000000bb0000613d0000000b0300002900000000020304330000000e05000029000000000252004b0000000a04000029000003e30000a13d00000005025002100000000002420019000000000101043b000000000012043500000001055000390000000901000029000000000115004b000003a30000413d0000000501000029000000030110008c0000039e0000213d0000000001030433000000000101004b000004d80000c13d000002ef0100004100000000001004350000003201000039000000040010043f000002f00100004100000aba000104300000000401000039000000590200008a000500000002001d0000000007000019000000000600001900000058031000390000000802000029000d00000003001d000000000223004b000000bb0000213d000000070200002900000000022100190000000001000414000002af032001970000000504000029000000000442004b0000008a0000213d00000058022000390000000004000031000000000524004b0000008a0000413d000c00000007001d000e00000006001d0000000203300367000002cf0510009c000001960000813d0000000002240049000002af0220019700000000022303df000000c001100210000002b801100197000002b9011001c700000000011203af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000004970000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c0000000e09000029000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f0430003900000005044002720000000c0a000029000004300000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000004280000413d000000000400004b000004320000613d0000000104000031000000000443004b000000bb0000213d00000003040003670000000505300272000004410000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000004390000413d0000001f03300190000004500000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001010433000000200110008c000005df0000c13d0000000b010000290000000001010433000000000191004b0000000a03000029000003e30000a13d0000000501900210000000000131001900000000020204330000000000210435000000400100043d00000040031000390000000000230435000000400200003900000000022104360000000000a20435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000e0600002900000001022001900000000602000029000000bb0000613d000000000701043b0000000106600039000000000126004b0000000d020000290000000001020019000003ee0000413d000003850000013d000000400100043d0000006402100039000002d00300004100000000003204350000004402100039000002d103000041000000000032043500000024021000390000003c030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d2011001c700000aba000104300000001f0430018f0000000502300272000004a20000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000049b0000413d000000000504004b000004b00000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000000400200043d0000001f0430018f0000000503300272000004bf0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004b70000413d000000000504004b000004ce0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000002af010000410000000103000031000002af0430009c0000000003018019000002af0420009c000000000102401900000040011002100000006002300210000000000112019f00000aba00010430000000050100008a000900000001001d0000000d02000029000000000112004b0000008a0000213d0000000d0100002900000004031000390000000801000029000000000113004b000000bb0000213d0000000a010000290000000001010433000500000001001d00000007010000290000000d0200002900000000011200190000000201100367000000000101043b000002b90210009c0000000007000019000005450000813d0000000201000039000300000001001d000000000101041a000000000117004b000005f10000c13d0000000901000029000000000113004b0000008a0000213d00000004023000390000000801000029000e00000002001d000000000112004b000000bb0000213d000000070100002900000000011300190000000201100367000000000101043b000002b90210009c000b00000000001d000006240000813d0000000301000039000d00000001001d000000000101041a0000000b02000029000000000112004b000006cf0000c13d00000008010000290000000e02000029000000000112004b000003e30000813d00000007010000290000000e0200002900000000011200190000000203000367000000000213034f000000000202043b000002e702200197000002c10220009c0000072e0000c13d00000009020000290000000e04000029000000000224004b0000008a0000213d0000000e0200002900000004022000390000000804000029000000000442004b000000bb0000213d0000000101100039000000000113034f000000000101043b0000000804000029000000000442004b000003e30000813d000000e80110027000000007040000290000000002420019000000000423034f0000000e020000290000000502200039000000000521001a000c00000005001d000000000404043b0000008a0000413d00000008050000290000000c06000029000000000556004b000000bb0000213d0000000c05000029000002ea0550009c000007a60000413d000000400100043d0000004402100039000002ee030000410000000000320435000002c902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000e001100270000a00000001001d0000000007000019000e00000000001d0000000901000029000000000113004b0000008a0000213d00000004013000390000000802000029000000000221004b000000bb0000213d000000070200002900000000022300190000000202200367000000000202043b000000e002200270000000000612001a0000008a0000413d0000000803000029000000000336004b000000bb0000213d000000070300002900000000033100190000000001000414000000000232001a000002af043001970000008a0000413d0000000003000031000000000523004b0000008a0000413d000d00000007001d000b00000006001d0000000204400367000002af0510009c000001960000213d0000000002230049000002af0220019700000000022403df000000c001100210000002b801100197000002b9011001c700000000011203af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000006090000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f0430003900000005044002720000000d09000029000005940000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b0000058c0000413d000000000400004b000005960000613d0000000104000031000000000443004b000000bb0000213d00000003040003670000000505300272000005a50000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b0000059d0000413d0000001f03300190000005b40000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001010433000000200110008c000005df0000c13d0000000002020433000000400100043d00000040031000390000000000230435000000200210003900000000009204350000000c030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f00000001022001900000000b03000029000000bb0000613d000000000701043b0000000e0200002900000001022000390000000a01000029000e00000002001d000000000112004b000005490000413d000004ed0000013d000000400100043d0000004402100039000002d503000041000000000032043500000024021000390000001f030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000008402100039000002d60300004100000000003204350000006402100039000002d70300004100000000003204350000004402100039000002d8030000410000000000320435000000240210003900000044030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d9011001c700000aba000104300000001f0430018f0000000502300272000006140000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000060d0000413d000000000504004b000006220000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000000e001100270000600000001001d000b00000000001d000a00000000001d00000009010000290000000e02000029000000000112004b0000008a0000213d0000000e0100002900000004011000390000000802000029000000000221004b000000bb0000213d00000007020000290000000e0300002900000000022300190000000202200367000000000202043b000000e003200270000d00000003001d000000000313001a000e00000003001d0000008a0000413d00000008030000290000000e04000029000000000334004b000000bb0000213d000002da03200198000007430000c13d000002dc0320009c000007550000813d000002dd02200198000007670000613d0000000702000029000000000321001900000000010004140000000d02000029000000000232001a000002af043001970000008a0000413d0000000003000031000000000523004b0000008a0000413d0000000204400367000002af0510009c000001960000213d0000000002230049000002af0220019700000000022403df000000c001100210000002b801100197000002b9011001c700000000011203af00000002020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af0330019700030000000103550000000102200190000007790000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c000003660000213d0000000104400190000003660000c13d000000400020043f00000000023104360000001f0430003900000005044002720000067d0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000006750000413d000000000400004b0000067f0000613d0000000104000031000000000443004b000000bb0000213d000000030400036700000005053002720000068e0000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000006860000413d0000001f033001900000069d0000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001010433000000200110008c000007940000c13d0000000001020433000002df011001970000000d02000029000000db02200210000002e002200197000000000112019f000002c1021001c7000000400100043d0000004003100039000000000023043500000020021000390000000b0300002900000000003204350000000c030000290000000000310435000002bb0310009c000003660000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000000bb0000613d000000000101043b000b00000001001d0000000a0200002900000001022000390000000601000029000a00000002001d000000000112004b000006280000413d000005010000013d000000400100043d0000008402100039000002e40300004100000000003204350000006402100039000002e50300004100000000003204350000004402100039000002e603000041000000000032043500000024021000390000005e030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d9011001c700000aba00010430000000200200003900000000022104360000000d0500002900000000005204350000001f0350018f00000040021000390000000c0400002900000002044003670000000505500272000006fa0000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000006f20000413d000000000603004b000007090000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000d03000029000000000232001900000000000204350000005f02300039000000200300008a000000000232016f000002af03000041000002af0410009c00000000010380190000004001100210000002af0420009c00000000020380190000006002200210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c70000800d020000390000000303000039000002c60400004100000001050000290000000b060000290ab80aa90000040f0000000101200190000000bb0000613d000000400100043d0000000b020000290000000000210435000002af02000041000002af0310009c00000000010280190000004001100210000002c7011001c700000ab90001042e000000400100043d0000006402100039000002e80300004100000000003204350000004402100039000002e9030000410000000000320435000000240210003900000027030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d2011001c700000aba00010430000000400100043d0000004402100039000002db030000410000000000320435000000240210003900000003030000290000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000004402100039000002e3030000410000000000320435000000240210003900000003030000290000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000400100043d0000004402100039000002e2030000410000000000320435000000240210003900000003030000290000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000001f0430018f0000000502300272000007840000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000077d0000413d000000000504004b000007920000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000000400100043d0000004402100039000002de030000410000000000320435000000240210003900000019030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000000c0500002900000004055000390000000806000029000000000665004b000000bb0000213d00000007060000290000000c070000290000000006670019000000000363034f000000000703043b000000e00670027000000110836000c9000002b90770009c000007b70000413d00000000876300d9000001100770008c0000008a0000c13d00000000085300190000000807000029000b00000008001d000000000778004b000000bb0000213d000000f804400270000000400900043d00000044079000390000000408000029000000000087043500000024079000390000000000470435000002eb0400004100000000004904350000008404900039000000000034043500000004049000390000000000640435000000070600002900000000076500190000001f0630018f000e00000009001d000000a40590003900000002087003670000000509300272000007da0000613d0000000007000019000000050a700210000000000ba50019000000000aa8034f000000000a0a043b0000000000ab04350000000107700039000000000a97004b000007d20000413d00000007070000290000000007720019000000000206004b000007eb0000613d0000000502900210000000000828034f00000000022500190000000306600210000000000902043300000000096901cf000000000969022f000000000808043b0000010006600089000000000868022f00000000066801cf000000000696019f0000000000620435000000000235001900000000000204350000001f02300039000002ec02200197000000000225001900000000034200490000000e04000029000000640440003900000000003404350000001f0310018f000000000212043600000002047003670000000505100272000008020000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000007fa0000413d000000000603004b000008110000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f0000000000350435000000000312001900000000000304350000001f01100039000002ed011001970000000e0400002900000000014100490000000001210019000002af02000041000002af0340009c000000000302001900000000030440190000004003300210000002af0410009c00000000010280190000006001100210000000000131019f0000000003000414000002af0430009c0000000002034019000000c002200210000000000112019f0000800e020000390ab80aa90000040f00000000030100190000006003300270000002af03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000083b0000613d000000000700001900000005087002100000000e090000290000000009890019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000008320000413d000000000705004b0000084b0000613d0000000506600210000000000761034f0000000e0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000008770000613d0000001f01400039000000600210018f0000000e010000290000000001120019000000000221004b00000000020000190000000102004039000002b70410009c000003660000213d0000000102200190000003660000c13d000000400010043f000000200130008c000000bb0000413d00000008010000290000000b02000029000000000112004b000000000100001900000001010060390000000e020000290000000002020433000e00000002001d0ab809ce0000040f0000000501000029000000000010041d00000007010000290000000c020000290ab809e60000040f0000000102000039000000000012041d00000003010000290000000e03000029000000000031041d000000000000041b000000000002041b000000000001041b0000000d01000029000000000001041b000000000100001900000ab90001042e000000400200043d0000001f0430018f0000000503300272000008840000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000087c0000413d000000000504004b000008930000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000002af010000410000000103000031000002af0430009c0000000003018019000002af0420009c000000000102401900000040011002100000006002300210000000000112019f00000aba00010430000000400100043d000002f70210009c000008a30000813d000000c002100039000000400020043f000000000001042d000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba0001043000070000000000020000000082010434000000f80320021000000040071000390000006006100039000000a005100039000200000001001d0000008002100039000600000002001d0000000004020433000700000005001d0000000005050433000500000006001d0000000006060433000400000007001d0000000007070433000300000008001d0000000008080433000000400100043d00000020021000390000000000320435000002c103000041000000000808004b000000000300601900000021081000390000000000380435000000f00370021000000022071000390000000000370435000000600360021000000024061000390000000000360435000000580310003900000000005304350000003803100039000000000043043500000058030000390000000000310435000002f80310009c000009400000813d0000008003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f00000001022001900000093e0000613d000000000201043b000000400100043d0000004003100039000000000400041a00000000002304350000002002100039000000000042043500000040030000390000000000310435000002bb0310009c000009400000213d0000006003100039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001010433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f00000001022001900000093e0000613d000000000101043b000000000010041b0000000103000039000000000203041a000000010100008a000000000112004b000009460000613d000100000002001d0000000101200039000000000013041b00000002010000290000000001010433000000ff0110018f000000400200043d000000000112043600000003040000290000000004040433000000000404004b0000000004000019000000010400c0390000000000410435000000040100002900000000010104330000ffff0110018f0000004004200039000000000014043500000005010000290000000001010433000002c00110019700000060042000390000000000140435000000060100002900000000010104330000008004200039000000000014043500000007010000290000000001010433000000a0042000390000000000140435000002af01000041000002af0420009c00000000020180190000000004000414000002af0540009c00000000010440190000004002200210000000c001100210000000000121019f000002c3011001c70000800d02000039000002c4040000410ab80aa90000040f00000001012001900000093e0000613d0000000101000029000000000001042d000000000100001900000aba00010430000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba00010430000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba0001043000020000000000020000000302000039000100000002001d000000000302041a000000400500043d0000004002500039000200000001001d00000000001204350000002002500039000000000032043500000040030000390000000000350435000002f90350009c000009a50000813d0000006003500039000000400030043f000002af03000041000002af0420009c000000000203801900000040022002100000000001050433000002af0410009c00000000010380190000006001100210000000000121019f0000000002000414000002af0420009c0000000002038019000000c002200210000000000112019f000002bc011001c700008010020000390ab80aae0000040f0000000102200190000009a30000613d000000000101043b0000000102000029000000000012041b0000000001000413000002af031001970000000206000029000000e0016002700000ffff0210018f000000050120021000000004041001bf00000000514300a900000000544100d9000000000343004b0000099d0000c13d0000000102200270000000010320003900000007423000c9000000075420011a000000000343004b0000099d0000c13d0000000001210019000002fa0210009c000009ab0000813d00000028011000390000000002100420000000400100043d000000000202004b000009bd0000613d0000000000610435000002af020000410000000003000414000002af0430009c0000000003028019000002af0410009c00000000010280190000004001100210000000c002300210000000000112019f000002fb011001c70000800d020000390000000103000039000002fc040000410ab80aa90000040f0000000101200190000009a30000613d000000000001042d000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba00010430000000000100001900000aba00010430000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba00010430000000400100043d0000004402100039000002e1030000410000000000320435000000240210003900000008030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000004402100039000002c8030000410000000000320435000000240210003900000014030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba00010430000000000101004b000009d10000613d000000000001042d000000400100043d0000006402100039000002fd0300004100000000003204350000004402100039000002fe03000041000000000032043500000024021000390000002a030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002d2011001c700000aba0001043000000000030004140000000004120019000000000224004b00000000050000190000000105004039000002af02100197000000010150019000000a450000c13d0000000001000031000000000541004b00000a450000413d0000000202200367000002cf0530009c00000a4b0000813d0000000001410049000002af0110019700000000011203df000000c002300210000002b802200197000002b9022001c700000000012103af00008010020000390ab80ab30000040f00000000030100190000006003300270000102af0030019d000002af033001970003000000010355000000010220019000000a5d0000613d0000003f01300039000002ba02100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000002b70520009c00000a780000213d000000010440019000000a780000c13d000000400020043f00000000023104360000001f04300039000000050440027200000a1f0000613d00000000050000310000000205500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b00000a170000413d000000000400004b00000a210000613d0000000104000031000000000443004b00000a7e0000213d00000003050003670000001f0430018f000000050330027200000a310000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b00000a290000413d000000000604004b00000a400000613d0000000503300210000000000535034f00000000033200190000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f00000000004304350000000001010433000000200110008c00000a800000c13d0000000001020433000000000001042d000002ef0100004100000000001004350000001101000039000000040010043f000002f00100004100000aba00010430000000400100043d0000004402100039000002e1030000410000000000320435000000240210003900000008030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba000104300000001f0430018f000000050230027200000a680000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b00000a610000413d000000000504004b00000a760000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000600130021000000aba00010430000002ef0100004100000000001004350000004101000039000000040010043f000002f00100004100000aba00010430000000000100001900000aba00010430000000400100043d0000004402100039000002d503000041000000000032043500000024021000390000001f030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba0001043000000078010000390000000001100420000000000101004b00000a970000613d000000000001042d000000400100043d0000004402100039000002c8030000410000000000320435000000240210003900000014030000390000000000320435000002c9020000410000000000210435000000040210003900000020030000390000000000320435000002af02000041000002af0310009c00000000010280190000004001100210000002ca011001c700000aba0001043000000aac002104210000000102000039000000000001042d0000000002000019000000000001042d00000ab1002104230000000102000039000000000001042d0000000002000019000000000001042d00000ab6002104230000000102000039000000000001042d0000000002000019000000000001042d00000ab80000043200000ab90001042e00000aba00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000628b636d00000000000000000000000000000000000000000000000000000000628b636e0000000000000000000000000000000000000000000000000000000062f84b240000000000000000000000000000000000000000000000000000000039b34c6e0000000000000000000000000000000000000000000000000000000056079ac88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000ffffffff000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffff9f02000000000000000000000000000000000000000000000000000000000000008ac84c0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f02000000000000000000000000000000000000c000000000000000000000000027fe8c0b49f49507b9d4fe5968c9f49edfe5c9df277d433a07a0717ede97638d00000000000000000000000000000000ffffffffffffffffffffffffffffffff3a36e47291f4201faf137fab081d92295bce2d53be2c6ca68ba82c7faa9ce24100000000000000000000000000000000000000200000000000000000000000004661696c656420746f206368617267652067617300000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f61646572000000080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffeffdf000000000000000000000000000000000000000000000000000000000001002000000000000000000000000000000000000000000000000000000001000000006e6f7420657175616c20746f20636861696e65644c6f677348617368000000007265636f6e7374727563746564436861696e65644c6f677348617368206973200000000000000000000000000000000000000084000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff72abee45b59e344af8a6e520241c4744aff26ed411f4c4b00f8af09adada43ba6b656363616b3235362072657475726e656420696e76616c69642064617461004861736800000000000000000000000000000000000000000000000000000000206973206e6f7420657175616c20746f20636861696e65644d657373616765737265636f6e7374727563746564436861696e65644d657373616765734861736800000000000000000000000000000000000000a40000000000000000000000000000001f00000000000000000000000000000000000000000000000000000000706f000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000007368612072657475726e656420696e76616c696420646174610000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff06ffffff000000000000000000000000000000000000000000000000000000004f766572666c6f770000000000000000000000000000000000000000000000007072000000000000000000000000000000000000000000000000000000000000707000000000000000000000000000000000000000000000000000000000000061696e65644c3142797465636f64657352657665616c44617461486173680000657665616c4461746148617368206973206e6f7420657175616c20746f2063687265636f6e7374727563746564436861696e65644c3142797465636f64657352ff0000000000000000000000000000000000000000000000000000000000000069736d61746368000000000000000000000000000000000000000000000000007374617465206469666620636f6d7072657373696f6e2076657273696f6e206d000000000000000000000000000000000000000000000000000000000007ef416006d8b500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffe00000000000000000000000000000000000000000000000000000000001ffffe04c31204d657373656e676572207075626461746120697320746f6f206c6f6e674e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000546f6f206d616e79204c322d3e4c31206c6f677300000000000000000000000000000000000000000000000000000000000000000000000000000000000100006f2062652073797374656d20636f6e747261637400000000000000000000000054686973206d6574686f642072657175697265207468652063616c6c65722074496e617070726f7072696174652063616c6c65720000000000000000000000000000000000000000000000000000000000000064000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff40000000000000000000000000000000000000000000000000ffffffffffffff80000000000000000000000000000000000000000000000000ffffffffffffffa000000000000000000000000000000000000000000000000000000000ffffffd80200000000000000000000000000000000000020000000000000000000000000480d3c9f727b5e5c1203d4c61fb185d37f08e6b2dc5e9bbf98591b1a7addf57c64617461206172726179000000000000000000000000000000000000000000004578747261206461746120696e2074686520746f74616c4c32546f4c315075620000000000000000000000000000000000000000000000000000000000000000918be26e3402038993f44a7d3e3c4373187a68986a393c0b39192bb13d9ba4c6", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/L2EthToken.json b/src/deps/contracts/L2EthToken.json index 342ce6a6..49a982e3 100644 --- a/src/deps/contracts/L2EthToken.json +++ b/src/deps/contracts/L2EthToken.json @@ -247,8 +247,8 @@ "type": "function" } ], - "bytecode": "0x00030000000000020005000000000002000200000001035500000060011002700000010f0010019d000100000000001f0000008001000039000000400010043f00000001012001900000003c0000c13d0000000002000031000000040120008c000002990000413d0000000201000367000000000301043b000000e003300270000001110430009c000000440000a13d000001120430009c000000650000a13d000001130430009c000000e50000613d000001140130009c000002880000613d000001150130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000200310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000004010000390000000201100367000000000101043b0000011e011001970000000000100435000000200000043f0000000001000019043503fb0000040f000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d0000002001000039000001000010044300000120000004430000011001000041000004360001042e000001180130009c000000a20000213d0000011b0130009c000002080000613d0000011c0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d0000000101000039000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e000001160430009c000002300000613d000001170130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000600310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002402100370000000000202043b0000011e052001970000011e0220009c000002990000213d00000000020004110000004401100370000000000301043b000080060120008c0000033b0000613d000000090100008a000000000112016f000080010110008c0000033b0000613d000000400100043d00000064021000390000012703000041000000000032043500000044021000390000012803000041000000000032043500000024021000390000003e030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012a011001c70000043700010430000001190130009c0000026e0000613d0000011a0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000400310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002401100370000000000501043b0000000001000411000080010110008c000002b50000c13d0000000101000039000000000301041a0000000002530019000000000332004b000000000300001900000001030040390000000103300190000000df0000c13d000400000005001d000000000021041b0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005050000290000000102200190000002990000613d000000000101043b000000000201041a0000000403000029000000000232001a000000df0000413d000003880000013d000001310100004100000000001004350000001101000039000000040010043f00000132010000410000043700010430000000040320008a0000011d04000041000000400530008c000000000500001900000000050440190000011d03300197000000000603004b000000000400a0190000011d0330009c00000000030500190000000003046019000000000303004b000002990000c13d0000000403100370000000000803043b0000011e0380009c000002990000213d0000002403100370000000000303043b000001210430009c000002990000213d00000023043000390000011d05000041000000000624004b000000000600001900000000060580190000011d022001970000011d04400197000000000724004b0000000005008019000000000224013f0000011d0220009c00000000020600190000000002056019000000000202004b000002990000c13d0000000402300039000000000121034f000000000101043b000001210210009c000002680000213d000000bf02100039000000200500008a000000000252016f000001210420009c000002680000213d000000400020043f000000800010043f000000240330003900000000023100190000000004000031000000000242004b000002990000213d000400000005001d0000001f0210018f00000002033003670000000504100272000001280000613d00000000050000190000000506500210000000000763034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b000001200000413d000500000008001d000000000502004b000001380000613d0000000504400210000000000343034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000a00110003900000000000104350000000001000416000300000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000010220019000000005040000290000000407000029000002990000613d000000000101043b000000000201041a00000003090000290000000002920049000000000021041b0000000101000039000000000201041a0000000002920049000000000021041b0000012302000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000000008000411000000600280021000000058031000390000000000230435000000380210003900000000009204350000006c03100039000000800200043d000000000402004b0000016d0000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000524004b000001660000413d000000000332001900000000000304350000004c0320003900000000003104350000008b02200039000000000272016f000000000a12001900000000022a004b000000000200001900000001020040390000012103a0009c000002680000213d0000000102200190000002680000c13d000100000008001d0000004000a0043f000001240200004100000000002a04350000000402a000390000002003000039000000000032043500000000020104330000002403a0003900000000002304350000004403a00039000000000402004b000001900000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000001890000413d000000000132001900000000000104350000001f01200039000000000171016f0000010f020000410000010f03a0009c000000000302001900000000030a4019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f000080080200003900020000000a001d0435042b0000040f000000020a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001b90000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001b10000413d000000000705004b000001c80000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003d50000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005040000290000000305000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000020021000390000004003000039000000000032043500000000005104350000004003100039000000800200043d000000000023043500000060031000390000011e06400197000000000402004b000001ed0000613d00000000040000190000000005340019000000a007400039000000000707043300000000007504350000002004400039000000000524004b000001e60000413d000000000332001900000000000304350000007f022000390000000403000029000000000232016f0000010f030000410000010f0410009c000000000103801900000040011002100000010f0420009c00000000020380190000006002200210000000000112019f00000000020004140000010f0420009c0000000002038019000000c002200210000000000112019f00000125011001c70000800d020000390000000303000039000001260400004100000001050000290435042b0000040f0000000101200190000003d30000c13d000002990000013d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000c001000039000000400010043f0000000501000039000000800010043f0000013501000041000000a00010043f0000002001000039000000400200043d000500000002001d000000000212043600000080010000390435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000040220008a0000011d03000041000000200420008c000000000400001900000000040340190000011d02200197000000000502004b000000000300a0190000011d0220009c00000000020400190000000002036019000000000202004b000002990000c13d0000000401100370000000000401043b0000011e0140009c000002990000213d0000000001000416000400000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005040000290000000102200190000002990000613d000000000101043b000000000201041a00000004050000290000000002520049000000000021041b0000000101000039000000000201041a0000000002520049000000000021041b0000012302000041000000400100043d0000002003100039000000000023043500000060024002100000002403100039000000000023043500000038021000390000000000520435000000380200003900000000002104350000012f0210009c000002c70000413d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000400100043d000000120200003900000000002104350000010f020000410000010f0310009c000000000102801900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b0000029b0000613d00000000010000190000043700010430000000400100043d000400000001001d043504200000040f00000004030000290000002001300039000001200200004100000000002104350000000301000039000000000013043500000000010300190000002002000039000000400300043d000500000003001d00000000022304360435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000400100043d00000044021000390000013303000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c700000437000104300000006007100039000000400070043f00000124020000410000000000270435000000640210003900000020030000390000000000320435000000840310003900000000020104330000000000230435000000a403100039000000000402004b000002dc0000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000002d50000413d000000000132001900000000000104350000001f01200039000000200200008a000000000121016f0000010f020000410000010f0370009c00000000030200190000000003074019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f0000800802000039000300000007001d0435042b0000040f000000030a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003060000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000002fe0000413d000000000705004b000003150000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003620000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005050000290000000404000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000000004104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000011e065001970000800d020000390000000303000039000001300400004100000000050004110435042b0000040f0000000101200190000003d30000c13d000002990000013d000400000003001d0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d000300000005001d043504300000040f00000005030000290000000102200190000002990000613d000000000101043b000000000201041a0000000401000029000000000112004b0000039c0000813d000000400100043d00000044021000390000012d03000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c70000043700010430000000400200043d0000001f0430018f00000005033002720000036f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003670000413d000000000504004b0000037e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f0000043700010430000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d02000039000000020300003900000134040000410435042b0000040f0000000101200190000002990000613d000003d30000013d000200000002001d0000000000300435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f00000003030000290000000102200190000002990000613d000000040200002900000002040000290000000002240049000000000101043b000000000021041b00000000003004350000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000030600002900000005050000290000000102200190000002990000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d0200003900000003030000390000012c040000410435042b0000040f0000000101200190000002990000613d0000000001000019000004360001042e000000400200043d0000001f0430018f0000000503300272000003e20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003da0000413d000000000504004b000003f10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f00000437000104300000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f00000122011001c70000801002000039043504300000040f00000001022001900000040b0000613d000000000101043b000000000001042d0000000001000019000004370001043000000000030104330000000002320436000000000403004b000004190000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000004120000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d000001360210009c000004250000813d0000004001100039000000400010043f000000000001042d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000042e002104210000000102000039000000000001042d0000000002000019000000000001042d00000433002104230000000102000039000000000001042d0000000002000019000000000001042d0000043500000432000004360001042e0000043700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000051cff8d80000000000000000000000000000000000000000000000000000000084bc3eaf0000000000000000000000000000000000000000000000000000000084bc3eb00000000000000000000000000000000000000000000000000000000095d89b41000000000000000000000000000000000000000000000000000000009cc7f7080000000000000000000000000000000000000000000000000000000051cff8d900000000000000000000000000000000000000000000000000000000579952fc00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000018160ddd8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000000000000000000000004554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff02000000000000000000000000000000000000400000000000000000000000006c0960f90000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c405fe8958410bbaf0c73b7a0c3e20859e86ca168a4c9b0def9c54d2555a306b616c206163636573732063616e2063616c6c2074686973206d6574686f6400004f6e6c792073797374656d20636f6e747261637473207769746820737065636908c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e7366657220616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa02717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63984e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f61646572000f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968854574686572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000000000000000000000000000006fbea03ed0a32c9e71242865ffb796931b6a02fab6ec5c1ed8de0b650690f80c", - "deployedBytecode": "0x00030000000000020005000000000002000200000001035500000060011002700000010f0010019d000100000000001f0000008001000039000000400010043f00000001012001900000003c0000c13d0000000002000031000000040120008c000002990000413d0000000201000367000000000301043b000000e003300270000001110430009c000000440000a13d000001120430009c000000650000a13d000001130430009c000000e50000613d000001140130009c000002880000613d000001150130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000200310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000004010000390000000201100367000000000101043b0000011e011001970000000000100435000000200000043f0000000001000019043503fb0000040f000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d0000002001000039000001000010044300000120000004430000011001000041000004360001042e000001180130009c000000a20000213d0000011b0130009c000002080000613d0000011c0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d0000000101000039000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e000001160430009c000002300000613d000001170130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000600310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002402100370000000000202043b0000011e052001970000011e0220009c000002990000213d00000000020004110000004401100370000000000301043b000080060120008c0000033b0000613d000000090100008a000000000112016f000080010110008c0000033b0000613d000000400100043d00000064021000390000012703000041000000000032043500000044021000390000012803000041000000000032043500000024021000390000003e030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012a011001c70000043700010430000001190130009c0000026e0000613d0000011a0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000400310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002401100370000000000501043b0000000001000411000080010110008c000002b50000c13d0000000101000039000000000301041a0000000002530019000000000332004b000000000300001900000001030040390000000103300190000000df0000c13d000400000005001d000000000021041b0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005050000290000000102200190000002990000613d000000000101043b000000000201041a0000000403000029000000000232001a000000df0000413d000003880000013d000001310100004100000000001004350000001101000039000000040010043f00000132010000410000043700010430000000040320008a0000011d04000041000000400530008c000000000500001900000000050440190000011d03300197000000000603004b000000000400a0190000011d0330009c00000000030500190000000003046019000000000303004b000002990000c13d0000000403100370000000000803043b0000011e0380009c000002990000213d0000002403100370000000000303043b000001210430009c000002990000213d00000023043000390000011d05000041000000000624004b000000000600001900000000060580190000011d022001970000011d04400197000000000724004b0000000005008019000000000224013f0000011d0220009c00000000020600190000000002056019000000000202004b000002990000c13d0000000402300039000000000121034f000000000101043b000001210210009c000002680000213d000000bf02100039000000200500008a000000000252016f000001210420009c000002680000213d000000400020043f000000800010043f000000240330003900000000023100190000000004000031000000000242004b000002990000213d000400000005001d0000001f0210018f00000002033003670000000504100272000001280000613d00000000050000190000000506500210000000000763034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b000001200000413d000500000008001d000000000502004b000001380000613d0000000504400210000000000343034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000a00110003900000000000104350000000001000416000300000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000010220019000000005040000290000000407000029000002990000613d000000000101043b000000000201041a00000003090000290000000002920049000000000021041b0000000101000039000000000201041a0000000002920049000000000021041b0000012302000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000000008000411000000600280021000000058031000390000000000230435000000380210003900000000009204350000006c03100039000000800200043d000000000402004b0000016d0000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000524004b000001660000413d000000000332001900000000000304350000004c0320003900000000003104350000008b02200039000000000272016f000000000a12001900000000022a004b000000000200001900000001020040390000012103a0009c000002680000213d0000000102200190000002680000c13d000100000008001d0000004000a0043f000001240200004100000000002a04350000000402a000390000002003000039000000000032043500000000020104330000002403a0003900000000002304350000004403a00039000000000402004b000001900000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000001890000413d000000000132001900000000000104350000001f01200039000000000171016f0000010f020000410000010f03a0009c000000000302001900000000030a4019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f000080080200003900020000000a001d0435042b0000040f000000020a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001b90000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001b10000413d000000000705004b000001c80000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003d50000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005040000290000000305000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000020021000390000004003000039000000000032043500000000005104350000004003100039000000800200043d000000000023043500000060031000390000011e06400197000000000402004b000001ed0000613d00000000040000190000000005340019000000a007400039000000000707043300000000007504350000002004400039000000000524004b000001e60000413d000000000332001900000000000304350000007f022000390000000403000029000000000232016f0000010f030000410000010f0410009c000000000103801900000040011002100000010f0420009c00000000020380190000006002200210000000000112019f00000000020004140000010f0420009c0000000002038019000000c002200210000000000112019f00000125011001c70000800d020000390000000303000039000001260400004100000001050000290435042b0000040f0000000101200190000003d30000c13d000002990000013d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000c001000039000000400010043f0000000501000039000000800010043f0000013501000041000000a00010043f0000002001000039000000400200043d000500000002001d000000000212043600000080010000390435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000040220008a0000011d03000041000000200420008c000000000400001900000000040340190000011d02200197000000000502004b000000000300a0190000011d0220009c00000000020400190000000002036019000000000202004b000002990000c13d0000000401100370000000000401043b0000011e0140009c000002990000213d0000000001000416000400000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005040000290000000102200190000002990000613d000000000101043b000000000201041a00000004050000290000000002520049000000000021041b0000000101000039000000000201041a0000000002520049000000000021041b0000012302000041000000400100043d0000002003100039000000000023043500000060024002100000002403100039000000000023043500000038021000390000000000520435000000380200003900000000002104350000012f0210009c000002c70000413d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000400100043d000000120200003900000000002104350000010f020000410000010f0310009c000000000102801900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b0000029b0000613d00000000010000190000043700010430000000400100043d000400000001001d043504200000040f00000004030000290000002001300039000001200200004100000000002104350000000301000039000000000013043500000000010300190000002002000039000000400300043d000500000003001d00000000022304360435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000400100043d00000044021000390000013303000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c700000437000104300000006007100039000000400070043f00000124020000410000000000270435000000640210003900000020030000390000000000320435000000840310003900000000020104330000000000230435000000a403100039000000000402004b000002dc0000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000002d50000413d000000000132001900000000000104350000001f01200039000000200200008a000000000121016f0000010f020000410000010f0370009c00000000030200190000000003074019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f0000800802000039000300000007001d0435042b0000040f000000030a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003060000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000002fe0000413d000000000705004b000003150000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003620000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005050000290000000404000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000000004104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000011e065001970000800d020000390000000303000039000001300400004100000000050004110435042b0000040f0000000101200190000003d30000c13d000002990000013d000400000003001d0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d000300000005001d043504300000040f00000005030000290000000102200190000002990000613d000000000101043b000000000201041a0000000401000029000000000112004b0000039c0000813d000000400100043d00000044021000390000012d03000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c70000043700010430000000400200043d0000001f0430018f00000005033002720000036f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003670000413d000000000504004b0000037e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f0000043700010430000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d02000039000000020300003900000134040000410435042b0000040f0000000101200190000002990000613d000003d30000013d000200000002001d0000000000300435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f00000003030000290000000102200190000002990000613d000000040200002900000002040000290000000002240049000000000101043b000000000021041b00000000003004350000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000030600002900000005050000290000000102200190000002990000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d0200003900000003030000390000012c040000410435042b0000040f0000000101200190000002990000613d0000000001000019000004360001042e000000400200043d0000001f0430018f0000000503300272000003e20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003da0000413d000000000504004b000003f10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f00000437000104300000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f00000122011001c70000801002000039043504300000040f00000001022001900000040b0000613d000000000101043b000000000001042d0000000001000019000004370001043000000000030104330000000002320436000000000403004b000004190000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000004120000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d000001360210009c000004250000813d0000004001100039000000400010043f000000000001042d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000042e002104210000000102000039000000000001042d0000000002000019000000000001042d00000433002104230000000102000039000000000001042d0000000002000019000000000001042d0000043500000432000004360001042e0000043700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000051cff8d80000000000000000000000000000000000000000000000000000000084bc3eaf0000000000000000000000000000000000000000000000000000000084bc3eb00000000000000000000000000000000000000000000000000000000095d89b41000000000000000000000000000000000000000000000000000000009cc7f7080000000000000000000000000000000000000000000000000000000051cff8d900000000000000000000000000000000000000000000000000000000579952fc00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000018160ddd8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000000000000000000000004554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff02000000000000000000000000000000000000400000000000000000000000006c0960f90000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c405fe8958410bbaf0c73b7a0c3e20859e86ca168a4c9b0def9c54d2555a306b616c206163636573732063616e2063616c6c2074686973206d6574686f6400004f6e6c792073797374656d20636f6e747261637473207769746820737065636908c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e7366657220616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa02717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63984e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f61646572000f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968854574686572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000000000000000000000000000006fbea03ed0a32c9e71242865ffb796931b6a02fab6ec5c1ed8de0b650690f80c", + "bytecode": "0x00030000000000020005000000000002000200000001035500000060011002700000010f0010019d000100000000001f0000008001000039000000400010043f00000001012001900000003c0000c13d0000000002000031000000040120008c000002990000413d0000000201000367000000000301043b000000e003300270000001110430009c000000440000a13d000001120430009c000000650000a13d000001130430009c000000e50000613d000001140130009c000002880000613d000001150130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000200310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000004010000390000000201100367000000000101043b0000011e011001970000000000100435000000200000043f0000000001000019043503fb0000040f000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d0000002001000039000001000010044300000120000004430000011001000041000004360001042e000001180130009c000000a20000213d0000011b0130009c000002080000613d0000011c0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d0000000101000039000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e000001160430009c000002300000613d000001170130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000600310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002402100370000000000202043b0000011e052001970000011e0220009c000002990000213d00000000020004110000004401100370000000000301043b000080060120008c0000033b0000613d000000090100008a000000000112016f000080010110008c0000033b0000613d000000400100043d00000064021000390000012703000041000000000032043500000044021000390000012803000041000000000032043500000024021000390000003e030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012a011001c70000043700010430000001190130009c0000026e0000613d0000011a0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000400310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002401100370000000000501043b0000000001000411000080010110008c000002b50000c13d0000000101000039000000000301041a0000000002530019000000000332004b000000000300001900000001030040390000000103300190000000df0000c13d000400000005001d000000000021041b0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005050000290000000102200190000002990000613d000000000101043b000000000201041a0000000403000029000000000232001a000000df0000413d000003880000013d000001310100004100000000001004350000001101000039000000040010043f00000132010000410000043700010430000000040320008a0000011d04000041000000400530008c000000000500001900000000050440190000011d03300197000000000603004b000000000400a0190000011d0330009c00000000030500190000000003046019000000000303004b000002990000c13d0000000403100370000000000803043b0000011e0380009c000002990000213d0000002403100370000000000303043b000001210430009c000002990000213d00000023043000390000011d05000041000000000624004b000000000600001900000000060580190000011d022001970000011d04400197000000000724004b0000000005008019000000000224013f0000011d0220009c00000000020600190000000002056019000000000202004b000002990000c13d0000000402300039000000000121034f000000000101043b000001210210009c000002680000213d000000bf02100039000000200500008a000000000252016f000001210420009c000002680000213d000000400020043f000000800010043f000000240330003900000000023100190000000004000031000000000242004b000002990000213d000400000005001d0000001f0210018f00000002033003670000000504100272000001280000613d00000000050000190000000506500210000000000763034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b000001200000413d000500000008001d000000000502004b000001380000613d0000000504400210000000000343034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000a00110003900000000000104350000000001000416000300000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000010220019000000005040000290000000407000029000002990000613d000000000101043b000000000201041a00000003090000290000000002920049000000000021041b0000000101000039000000000201041a0000000002920049000000000021041b0000012302000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000000008000411000000600280021000000058031000390000000000230435000000380210003900000000009204350000006c03100039000000800200043d000000000402004b0000016d0000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000524004b000001660000413d000000000332001900000000000304350000004c0320003900000000003104350000008b02200039000000000272016f000000000a12001900000000022a004b000000000200001900000001020040390000012103a0009c000002680000213d0000000102200190000002680000c13d000100000008001d0000004000a0043f000001240200004100000000002a04350000000402a000390000002003000039000000000032043500000000020104330000002403a0003900000000002304350000004403a00039000000000402004b000001900000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000001890000413d000000000132001900000000000104350000001f01200039000000000171016f0000010f020000410000010f03a0009c000000000302001900000000030a4019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f000080080200003900020000000a001d0435042b0000040f000000020a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001b90000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001b10000413d000000000705004b000001c80000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003d50000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005040000290000000305000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000020021000390000004003000039000000000032043500000000005104350000004003100039000000800200043d000000000023043500000060031000390000011e06400197000000000402004b000001ed0000613d00000000040000190000000005340019000000a007400039000000000707043300000000007504350000002004400039000000000524004b000001e60000413d000000000332001900000000000304350000007f022000390000000403000029000000000232016f0000010f030000410000010f0410009c000000000103801900000040011002100000010f0420009c00000000020380190000006002200210000000000112019f00000000020004140000010f0420009c0000000002038019000000c002200210000000000112019f00000125011001c70000800d020000390000000303000039000001260400004100000001050000290435042b0000040f0000000101200190000003d30000c13d000002990000013d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000c001000039000000400010043f0000000501000039000000800010043f0000013501000041000000a00010043f0000002001000039000000400200043d000500000002001d000000000212043600000080010000390435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000040220008a0000011d03000041000000200420008c000000000400001900000000040340190000011d02200197000000000502004b000000000300a0190000011d0220009c00000000020400190000000002036019000000000202004b000002990000c13d0000000401100370000000000401043b0000011e0140009c000002990000213d0000000001000416000400000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005040000290000000102200190000002990000613d000000000101043b000000000201041a00000004050000290000000002520049000000000021041b0000000101000039000000000201041a0000000002520049000000000021041b0000012302000041000000400100043d0000002003100039000000000023043500000060024002100000002403100039000000000023043500000038021000390000000000520435000000380200003900000000002104350000012f0210009c000002c70000413d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000400100043d000000120200003900000000002104350000010f020000410000010f0310009c000000000102801900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b0000029b0000613d00000000010000190000043700010430000000400100043d000400000001001d043504200000040f00000004030000290000002001300039000001200200004100000000002104350000000301000039000000000013043500000000010300190000002002000039000000400300043d000500000003001d00000000022304360435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000400100043d00000044021000390000013303000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c700000437000104300000006007100039000000400070043f00000124020000410000000000270435000000640210003900000020030000390000000000320435000000840310003900000000020104330000000000230435000000a403100039000000000402004b000002dc0000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000002d50000413d000000000132001900000000000104350000001f01200039000000200200008a000000000121016f0000010f020000410000010f0370009c00000000030200190000000003074019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f0000800802000039000300000007001d0435042b0000040f000000030a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003060000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000002fe0000413d000000000705004b000003150000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003620000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005050000290000000404000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000000004104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000011e065001970000800d020000390000000303000039000001300400004100000000050004110435042b0000040f0000000101200190000003d30000c13d000002990000013d000400000003001d0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d000300000005001d043504300000040f00000005030000290000000102200190000002990000613d000000000101043b000000000201041a0000000401000029000000000112004b0000039c0000813d000000400100043d00000044021000390000012d03000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c70000043700010430000000400200043d0000001f0430018f00000005033002720000036f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003670000413d000000000504004b0000037e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f0000043700010430000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d02000039000000020300003900000134040000410435042b0000040f0000000101200190000002990000613d000003d30000013d000200000002001d0000000000300435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f00000003030000290000000102200190000002990000613d000000040200002900000002040000290000000002240049000000000101043b000000000021041b00000000003004350000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000030600002900000005050000290000000102200190000002990000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d0200003900000003030000390000012c040000410435042b0000040f0000000101200190000002990000613d0000000001000019000004360001042e000000400200043d0000001f0430018f0000000503300272000003e20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003da0000413d000000000504004b000003f10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f00000437000104300000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f00000122011001c70000801002000039043504300000040f00000001022001900000040b0000613d000000000101043b000000000001042d0000000001000019000004370001043000000000030104330000000002320436000000000403004b000004190000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000004120000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d000001360210009c000004250000813d0000004001100039000000400010043f000000000001042d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000042e002104210000000102000039000000000001042d0000000002000019000000000001042d00000433002104230000000102000039000000000001042d0000000002000019000000000001042d0000043500000432000004360001042e0000043700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000051cff8d80000000000000000000000000000000000000000000000000000000084bc3eaf0000000000000000000000000000000000000000000000000000000084bc3eb00000000000000000000000000000000000000000000000000000000095d89b41000000000000000000000000000000000000000000000000000000009cc7f7080000000000000000000000000000000000000000000000000000000051cff8d900000000000000000000000000000000000000000000000000000000579952fc00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000018160ddd8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000000000000000000000004554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff02000000000000000000000000000000000000400000000000000000000000006c0960f90000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c405fe8958410bbaf0c73b7a0c3e20859e86ca168a4c9b0def9c54d2555a306b616c206163636573732063616e2063616c6c2074686973206d6574686f6400004f6e6c792073797374656d20636f6e747261637473207769746820737065636908c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e7366657220616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa02717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63984e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f61646572000f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968854574686572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000000000000000000000000000007b3ba959bf7eac2739d6ef137ed2b810585c27a9dbd1782f8efe2a761831b7e4", + "deployedBytecode": "0x00030000000000020005000000000002000200000001035500000060011002700000010f0010019d000100000000001f0000008001000039000000400010043f00000001012001900000003c0000c13d0000000002000031000000040120008c000002990000413d0000000201000367000000000301043b000000e003300270000001110430009c000000440000a13d000001120430009c000000650000a13d000001130430009c000000e50000613d000001140130009c000002880000613d000001150130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000200310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000004010000390000000201100367000000000101043b0000011e011001970000000000100435000000200000043f0000000001000019043503fb0000040f000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d0000002001000039000001000010044300000120000004430000011001000041000004360001042e000001180130009c000000a20000213d0000011b0130009c000002080000613d0000011c0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d0000000101000039000000000101041a000000400200043d00000000001204350000010f010000410000010f0320009c000000000102401900000040011002100000011f011001c7000004360001042e000001160430009c000002300000613d000001170130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000600310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002402100370000000000202043b0000011e052001970000011e0220009c000002990000213d00000000020004110000004401100370000000000301043b000080060120008c0000033b0000613d000000090100008a000000000112016f000080010110008c0000033b0000613d000000400100043d00000064021000390000012703000041000000000032043500000044021000390000012803000041000000000032043500000024021000390000003e030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012a011001c70000043700010430000001190130009c0000026e0000613d0000011a0130009c000002990000c13d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000400310008c000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d00000002010003670000000402100370000000000402043b0000011e0240009c000002990000213d0000002401100370000000000501043b0000000001000411000080010110008c000002b50000c13d0000000101000039000000000301041a0000000002530019000000000332004b000000000300001900000001030040390000000103300190000000df0000c13d000400000005001d000000000021041b0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005050000290000000102200190000002990000613d000000000101043b000000000201041a0000000403000029000000000232001a000000df0000413d000003880000013d000001310100004100000000001004350000001101000039000000040010043f00000132010000410000043700010430000000040320008a0000011d04000041000000400530008c000000000500001900000000050440190000011d03300197000000000603004b000000000400a0190000011d0330009c00000000030500190000000003046019000000000303004b000002990000c13d0000000403100370000000000803043b0000011e0380009c000002990000213d0000002403100370000000000303043b000001210430009c000002990000213d00000023043000390000011d05000041000000000624004b000000000600001900000000060580190000011d022001970000011d04400197000000000724004b0000000005008019000000000224013f0000011d0220009c00000000020600190000000002056019000000000202004b000002990000c13d0000000402300039000000000121034f000000000101043b000001210210009c000002680000213d000000bf02100039000000200500008a000000000252016f000001210420009c000002680000213d000000400020043f000000800010043f000000240330003900000000023100190000000004000031000000000242004b000002990000213d000400000005001d0000001f0210018f00000002033003670000000504100272000001280000613d00000000050000190000000506500210000000000763034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b000001200000413d000500000008001d000000000502004b000001380000613d0000000504400210000000000343034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000a00110003900000000000104350000000001000416000300000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000010220019000000005040000290000000407000029000002990000613d000000000101043b000000000201041a00000003090000290000000002920049000000000021041b0000000101000039000000000201041a0000000002920049000000000021041b0000012302000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000000008000411000000600280021000000058031000390000000000230435000000380210003900000000009204350000006c03100039000000800200043d000000000402004b0000016d0000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000524004b000001660000413d000000000332001900000000000304350000004c0320003900000000003104350000008b02200039000000000272016f000000000a12001900000000022a004b000000000200001900000001020040390000012103a0009c000002680000213d0000000102200190000002680000c13d000100000008001d0000004000a0043f000001240200004100000000002a04350000000402a000390000002003000039000000000032043500000000020104330000002403a0003900000000002304350000004403a00039000000000402004b000001900000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000001890000413d000000000132001900000000000104350000001f01200039000000000171016f0000010f020000410000010f03a0009c000000000302001900000000030a4019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f000080080200003900020000000a001d0435042b0000040f000000020a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000001b90000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001b10000413d000000000705004b000001c80000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003d50000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005040000290000000305000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000020021000390000004003000039000000000032043500000000005104350000004003100039000000800200043d000000000023043500000060031000390000011e06400197000000000402004b000001ed0000613d00000000040000190000000005340019000000a007400039000000000707043300000000007504350000002004400039000000000524004b000001e60000413d000000000332001900000000000304350000007f022000390000000403000029000000000232016f0000010f030000410000010f0410009c000000000103801900000040011002100000010f0420009c00000000020380190000006002200210000000000112019f00000000020004140000010f0420009c0000000002038019000000c002200210000000000112019f00000125011001c70000800d020000390000000303000039000001260400004100000001050000290435042b0000040f0000000101200190000003d30000c13d000002990000013d0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000c001000039000000400010043f0000000501000039000000800010043f0000013501000041000000a00010043f0000002001000039000000400200043d000500000002001d000000000212043600000080010000390435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000040220008a0000011d03000041000000200420008c000000000400001900000000040340190000011d02200197000000000502004b000000000300a0190000011d0220009c00000000020400190000000002036019000000000202004b000002990000c13d0000000401100370000000000401043b0000011e0140009c000002990000213d0000000001000416000400000001001d00000000010004100000000000100435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d043504300000040f00000005040000290000000102200190000002990000613d000000000101043b000000000201041a00000004050000290000000002520049000000000021041b0000000101000039000000000201041a0000000002520049000000000021041b0000012302000041000000400100043d0000002003100039000000000023043500000060024002100000002403100039000000000023043500000038021000390000000000520435000000380200003900000000002104350000012f0210009c000002c70000413d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b000002990000c13d000000400100043d000000120200003900000000002104350000010f020000410000010f0310009c000000000102801900000040011002100000011f011001c7000004360001042e0000000001000416000000000101004b000002990000c13d000000040100008a00000000011000310000011d02000041000000000301004b000000000300001900000000030240190000011d01100197000000000401004b000000000200a0190000011d0110009c00000000010300190000000001026019000000000101004b0000029b0000613d00000000010000190000043700010430000000400100043d000400000001001d043504200000040f00000004030000290000002001300039000001200200004100000000002104350000000301000039000000000013043500000000010300190000002002000039000000400300043d000500000003001d00000000022304360435040d0000040f000000050400002900000000014100490000010f020000410000010f0310009c00000000010280190000010f0340009c000000000204401900000040022002100000006001100210000000000121019f000004360001042e000000400100043d00000044021000390000013303000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c700000437000104300000006007100039000000400070043f00000124020000410000000000270435000000640210003900000020030000390000000000320435000000840310003900000000020104330000000000230435000000a403100039000000000402004b000002dc0000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000002d50000413d000000000132001900000000000104350000001f01200039000000200200008a000000000121016f0000010f020000410000010f0370009c00000000030200190000000003074019000000400330021000000044011000390000010f0410009c00000000010280190000006001100210000000000131019f00000000030004140000010f0430009c0000000002034019000000c002200210000000000112019f0000800802000039000300000007001d0435042b0000040f000000030a000029000000000301001900000060033002700000010f03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000003060000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000002fe0000413d000000000705004b000003150000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000003620000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000001210410009c00000005050000290000000404000029000002680000213d0000000102200190000002680000c13d000000400010043f000000200230008c000002990000413d00000000004104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000011e065001970000800d020000390000000303000039000001300400004100000000050004110435042b0000040f0000000101200190000003d30000c13d000002990000013d000400000003001d0000000000400435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039000500000004001d000300000005001d043504300000040f00000005030000290000000102200190000002990000613d000000000101043b000000000201041a0000000401000029000000000112004b0000039c0000813d000000400100043d00000044021000390000012d03000041000000000032043500000024021000390000001f030000390000000000320435000001290200004100000000002104350000000402100039000000200300003900000000003204350000010f020000410000010f0310009c000000000102801900000040011002100000012e011001c70000043700010430000000400200043d0000001f0430018f00000005033002720000036f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003670000413d000000000504004b0000037e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f0000043700010430000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d02000039000000020300003900000134040000410435042b0000040f0000000101200190000002990000613d000003d30000013d000200000002001d0000000000300435000000200000043f0000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f00000003030000290000000102200190000002990000613d000000040200002900000002040000290000000002240049000000000101043b000000000021041b00000000003004350000010f0100004100000000020004140000010f0320009c0000000001024019000000c00110021000000122011001c70000801002000039043504300000040f000000030600002900000005050000290000000102200190000002990000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d00000000003104350000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f0000012b011001c70000800d0200003900000003030000390000012c040000410435042b0000040f0000000101200190000002990000613d0000000001000019000004360001042e000000400200043d0000001f0430018f0000000503300272000003e20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000003da0000413d000000000504004b000003f10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000010f0100004100000001030000310000010f0430009c00000000030180190000010f0420009c000000000102401900000040011002100000006002300210000000000112019f00000437000104300000010f0200004100000000030004140000010f0430009c00000000030280190000010f0410009c00000000010280190000004001100210000000c002300210000000000112019f00000122011001c70000801002000039043504300000040f00000001022001900000040b0000613d000000000101043b000000000001042d0000000001000019000004370001043000000000030104330000000002320436000000000403004b000004190000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b000004120000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d000001360210009c000004250000813d0000004001100039000000400010043f000000000001042d000001310100004100000000001004350000004101000039000000040010043f000001320100004100000437000104300000042e002104210000000102000039000000000001042d0000000002000019000000000001042d00000433002104230000000102000039000000000001042d0000000002000019000000000001042d0000043500000432000004360001042e0000043700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000051cff8d80000000000000000000000000000000000000000000000000000000084bc3eaf0000000000000000000000000000000000000000000000000000000084bc3eb00000000000000000000000000000000000000000000000000000000095d89b41000000000000000000000000000000000000000000000000000000009cc7f7080000000000000000000000000000000000000000000000000000000051cff8d900000000000000000000000000000000000000000000000000000000579952fc00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000018160ddd8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000200000000000000000000000004554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff02000000000000000000000000000000000000400000000000000000000000006c0960f90000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c405fe8958410bbaf0c73b7a0c3e20859e86ca168a4c9b0def9c54d2555a306b616c206163636573732063616e2063616c6c2074686973206d6574686f6400004f6e6c792073797374656d20636f6e747261637473207769746820737065636908c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e7366657220616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa02717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63984e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f61646572000f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968854574686572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000000000000000000000000000007b3ba959bf7eac2739d6ef137ed2b810585c27a9dbd1782f8efe2a761831b7e4", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/MsgValueSimulator.json b/src/deps/contracts/MsgValueSimulator.json index 9aaf0382..b669931c 100644 --- a/src/deps/contracts/MsgValueSimulator.json +++ b/src/deps/contracts/MsgValueSimulator.json @@ -8,8 +8,8 @@ "type": "fallback" } ], - "bytecode": "0x0008000000000002000000000601001900000060066002700000005a0760019700070000007103550006000000010355000300000003001f000400000004001f000500000005001f0000005a0060019d000200000002001f000100000000001f0000008001000039000000400010043f000000000100041600000001022001900000002e0000c13d000000000101004b000000350000c13d00000002010000390000000201100188000000370000c13d00000000010004110000005c0110009c000000370000413d000000400100043d00000064021000390000005d03000041000000000032043500000044021000390000005e0300004100000000003204350000002402100039000000290300003900000000003204350000005f0200004100000000002104350000000402100039000000200300003900000000003204350000005a020000410000005a0310009c0000000001028019000000400110021000000060011001c70000016300010430000000000101004b000000350000c13d0000002001000039000001000010044300000120000004430000005b01000041000001620001042e000000000100001900000163000104300000000001000031016100440000040f00000020021000390000005a030000410000005a0420009c000000000203801900000000010104330000005a0410009c000000000103801900000060011002100000004002200210000000000112019f000001620001042e0005000000000002000000000a01001900000005090000310000000304000031000000610100004100000004021001870000000001000410000000000112004b000001230000613d000000000104004b0000000007000411000000ae0000613d000000400100043d0000006403100039000100000004001d00000000004304350000004403100039000300000002001d0000000000230435000000200210003900000062030000410000000000320435000200000007001d00000061037001970000002404100039000000000034043500000064030000390000000000310435000000630310009c000001090000813d000000a003100039000000400030043f0000005a030000410000005a0420009c0000000002038019000000400220021000000000010104330000005a0410009c00000000010380190000006001100210000000000121019f00000000020004140000005a0420009c0000000002038019000000c002200210000000000121019f0000800a02000039000500000009001d00040000000a001d016101560000040f000000040a0000290000000509000029000700000001035500000060011002700001005a0010019d0000005a01100198000000a70000613d0000003f031000390000006404300197000000400300043d0000000004430019000000000534004b00000000050000190000000105004039000000650640009c000001090000213d0000000105500190000001090000c13d000000400040043f0000000001130436000000070300036700000001050000310000001f0450018f0000000505500272000000980000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000000900000413d000000000604004b000000a70000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000101200190000001210000613d0000000104000029000000660140009c000000030200002900000002070000290000010f0000813d000000000004041700000000030004140000000006000031000000060100036700000000040a004b000000b70000613d0000000004a6004b000001500000413d0000000006a600490000005a0430009c0000010f0000213d000000010490019000000069040000410000006a050000410000000004056019000000c0033002100000006b03300197000000000343019f0000005a0460019700000000014103df00000000013103af000000610d7001970161015b0000040f000000000301001900000060033002700001005a0030019d0000005a0330019700070000000103550000000102200190000001350000613d0000003f013000390000006402100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000650520009c000001090000213d0000000104400190000001090000c13d000000400020043f00000000023104360000001f043000390000000504400272000000e70000613d00000000050000310000000605500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000df0000413d000000000400004b000000e90000613d0000000104000031000000000443004b000001210000213d00000007050003670000001f0430018f0000000503300272000000f90000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000000f10000413d000000000604004b000001080000613d0000000503300210000000000535034f00000000023200190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d000000670100004100000000001004350000004101000039000000040010043f00000068010000410000016300010430000000400100043d00000044021000390000006c0300004100000000003204350000002402100039000000080300003900000000003204350000005f0200004100000000002104350000000402100039000000200300003900000000003204350000005a020000410000005a0310009c000000000102801900000040011002100000006d011001c7000001630001043000000000010000190000016300010430000000400100043d00000044021000390000006e03000041000000000032043500000024021000390000001e0300003900000000003204350000005f0200004100000000002104350000000402100039000000200300003900000000003204350000005a020000410000005a0310009c000000000102801900000040011002100000006d011001c700000163000104300000001f0430018f0000000502300272000001400000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000001390000413d000000000504004b0000014e0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000016300010430000000670100004100000000001004350000001101000039000000040010043f0000006801000041000001630001043000000159002104210000000102000039000000000001042d0000000002000019000000000001042d000000000f0d00190000015f002104290000000102000039000000000001042d0000000002000019000000000001042d0000016100000432000001620001042e0000016300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000000001000063616c6c20666c6167000000000000000000000000000000000000000000000054686973206d6574686f64207265717569726573207468652073797374656d2008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff579952fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff6000000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000001000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004d736756616c756553696d756c61746f722063616c6c7320697473656c660000000000000000000000000000000000000000000000000000000000000000000009d127489a4e8aecf103d135f11adbe6042923e1a5e2c1fb931fa594cae34c08", - "deployedBytecode": "0x0008000000000002000000000601001900000060066002700000005a0760019700070000007103550006000000010355000300000003001f000400000004001f000500000005001f0000005a0060019d000200000002001f000100000000001f0000008001000039000000400010043f000000000100041600000001022001900000002e0000c13d000000000101004b000000350000c13d00000002010000390000000201100188000000370000c13d00000000010004110000005c0110009c000000370000413d000000400100043d00000064021000390000005d03000041000000000032043500000044021000390000005e0300004100000000003204350000002402100039000000290300003900000000003204350000005f0200004100000000002104350000000402100039000000200300003900000000003204350000005a020000410000005a0310009c0000000001028019000000400110021000000060011001c70000016300010430000000000101004b000000350000c13d0000002001000039000001000010044300000120000004430000005b01000041000001620001042e000000000100001900000163000104300000000001000031016100440000040f00000020021000390000005a030000410000005a0420009c000000000203801900000000010104330000005a0410009c000000000103801900000060011002100000004002200210000000000112019f000001620001042e0005000000000002000000000a01001900000005090000310000000304000031000000610100004100000004021001870000000001000410000000000112004b000001230000613d000000000104004b0000000007000411000000ae0000613d000000400100043d0000006403100039000100000004001d00000000004304350000004403100039000300000002001d0000000000230435000000200210003900000062030000410000000000320435000200000007001d00000061037001970000002404100039000000000034043500000064030000390000000000310435000000630310009c000001090000813d000000a003100039000000400030043f0000005a030000410000005a0420009c0000000002038019000000400220021000000000010104330000005a0410009c00000000010380190000006001100210000000000121019f00000000020004140000005a0420009c0000000002038019000000c002200210000000000121019f0000800a02000039000500000009001d00040000000a001d016101560000040f000000040a0000290000000509000029000700000001035500000060011002700001005a0010019d0000005a01100198000000a70000613d0000003f031000390000006404300197000000400300043d0000000004430019000000000534004b00000000050000190000000105004039000000650640009c000001090000213d0000000105500190000001090000c13d000000400040043f0000000001130436000000070300036700000001050000310000001f0450018f0000000505500272000000980000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000000900000413d000000000604004b000000a70000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000101200190000001210000613d0000000104000029000000660140009c000000030200002900000002070000290000010f0000813d000000000004041700000000030004140000000006000031000000060100036700000000040a004b000000b70000613d0000000004a6004b000001500000413d0000000006a600490000005a0430009c0000010f0000213d000000010490019000000069040000410000006a050000410000000004056019000000c0033002100000006b03300197000000000343019f0000005a0460019700000000014103df00000000013103af000000610d7001970161015b0000040f000000000301001900000060033002700001005a0030019d0000005a0330019700070000000103550000000102200190000001350000613d0000003f013000390000006402100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000650520009c000001090000213d0000000104400190000001090000c13d000000400020043f00000000023104360000001f043000390000000504400272000000e70000613d00000000050000310000000605500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000df0000413d000000000400004b000000e90000613d0000000104000031000000000443004b000001210000213d00000007050003670000001f0430018f0000000503300272000000f90000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000000f10000413d000000000604004b000001080000613d0000000503300210000000000535034f00000000023200190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d000000670100004100000000001004350000004101000039000000040010043f00000068010000410000016300010430000000400100043d00000044021000390000006c0300004100000000003204350000002402100039000000080300003900000000003204350000005f0200004100000000002104350000000402100039000000200300003900000000003204350000005a020000410000005a0310009c000000000102801900000040011002100000006d011001c7000001630001043000000000010000190000016300010430000000400100043d00000044021000390000006e03000041000000000032043500000024021000390000001e0300003900000000003204350000005f0200004100000000002104350000000402100039000000200300003900000000003204350000005a020000410000005a0310009c000000000102801900000040011002100000006d011001c700000163000104300000001f0430018f0000000502300272000001400000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b000001390000413d000000000504004b0000014e0000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000012043500000060013002100000016300010430000000670100004100000000001004350000001101000039000000040010043f0000006801000041000001630001043000000159002104210000000102000039000000000001042d0000000002000019000000000001042d000000000f0d00190000015f002104290000000102000039000000000001042d0000000002000019000000000001042d0000016100000432000001620001042e0000016300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000000001000063616c6c20666c6167000000000000000000000000000000000000000000000054686973206d6574686f64207265717569726573207468652073797374656d2008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff579952fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff6000000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000001000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004d736756616c756553696d756c61746f722063616c6c7320697473656c660000000000000000000000000000000000000000000000000000000000000000000009d127489a4e8aecf103d135f11adbe6042923e1a5e2c1fb931fa594cae34c08", + "bytecode": "0x000800000000000200000000060100190000006006600270000000590760019700070000007103550006000000010355000300000003001f000400000004001f000500000005001f000000590060019d000200000002001f000100000000001f0000008001000039000000400010043f000000000100041600000001022001900000002e0000c13d000000000101004b000000350000c13d00000002010000390000000201100188000000370000c13d00000000010004110000005b0110009c000000370000413d000000400100043d00000064021000390000005c03000041000000000032043500000044021000390000005d0300004100000000003204350000002402100039000000240300003900000000003204350000005e0200004100000000002104350000000402100039000000200300003900000000003204350000005902000041000000590310009c000000000102801900000040011002100000005f011001c70000016000010430000000000101004b000000350000c13d0000002001000039000001000010044300000120000004430000005a010000410000015f0001042e000000000100001900000160000104300000000001000031015e00440000040f00000020021000390000005903000041000000590420009c00000000020380190000000001010433000000590410009c000000000103801900000060011002100000004002200210000000000112019f0000015f0001042e0005000000000002000000000901001900000005040000310000000305000031000000600100004100000004021001870000000001000410000000000112004b000001200000613d000000000105004b0000000006000411000000ae0000613d000200000004001d000000400100043d0000006403100039000100000005001d00000000005304350000004403100039000400000002001d0000000000230435000000200210003900000061030000410000000000320435000300000006001d00000060036001970000002404100039000000000034043500000064030000390000000000310435000000620310009c000001060000813d000000a003100039000000400030043f0000005903000041000000590420009c000000000203801900000040022002100000000001010433000000590410009c00000000010380190000006001100210000000000121019f0000000002000414000000590420009c0000000002038019000000c002200210000000000121019f0000800a02000039000500000009001d015e01530000040f000000050900002900070000000103550000006001100270000100590010019d0000005901100198000000a60000613d0000003f031000390000006304300197000000400300043d0000000004430019000000000534004b00000000050000190000000105004039000000640640009c000001060000213d0000000105500190000001060000c13d000000400040043f0000000001130436000000070300036700000001050000310000001f0450018f0000000505500272000000970000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b0000008f0000413d000000000604004b000000a60000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000001012001900000011e0000613d0000000105000029000000650150009c0000000402000029000000030600002900000002040000290000010c0000813d000000000005041700000000050004140000000001000031000000000391004b000001320000413d000000590350009c0000010c0000213d0000000103400190000000660300004100000067040000410000000003046019000000c0045002100000006804400197000000000334019f0000000001910049000000590110019700000006011003f700000000013103af000000600d600197015e01580000040f00000000030100190000006003300270000100590030019d000000590330019700070000000103550000000102200190000001380000613d0000003f013000390000006302100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000640520009c000001060000213d0000000104400190000001060000c13d000000400020043f00000000023104360000001f043000390000000504400272000000e40000613d00000000050000310000000605500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000dc0000413d000000000400004b000000e60000613d0000000104000031000000000443004b0000011e0000213d00000007050003670000001f0430018f0000000503300272000000f60000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000000ee0000413d000000000604004b000001050000613d0000000503300210000000000535034f00000000023200190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d000000690100004100000000001004350000004101000039000000040010043f0000006a010000410000016000010430000000400100043d00000044021000390000006b0300004100000000003204350000002402100039000000080300003900000000003204350000005e0200004100000000002104350000000402100039000000200300003900000000003204350000005902000041000000590310009c000000000102801900000040011002100000006c011001c7000001600001043000000000010000190000016000010430000000400100043d00000044021000390000006d03000041000000000032043500000024021000390000001e0300003900000000003204350000005e0200004100000000002104350000000402100039000000200300003900000000003204350000005902000041000000590310009c000000000102801900000040011002100000006c011001c70000016000010430000000690100004100000000001004350000001101000039000000040010043f0000006a0100004100000160000104300000001f0430018f0000000502300272000001430000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000013c0000413d000000000504004b000001510000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000001600001043000000156002104210000000102000039000000000001042d0000000002000019000000000001042d000000000f0d00190000015c002104290000000102000039000000000001042d0000000002000019000000000001042d0000015e000004320000015f0001042e000001600001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000010000666c61670000000000000000000000000000000000000000000000000000000054686973206d6574686f6420726571756972652073797374656d2063616c6c2008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff579952fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff6000000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004d736756616c756553696d756c61746f722063616c6c7320697473656c660000d44067f635588b53489f404b01f1d63a7a4aad6d0e7bbd1ac391aa57401c3dc1", + "deployedBytecode": "0x000800000000000200000000060100190000006006600270000000590760019700070000007103550006000000010355000300000003001f000400000004001f000500000005001f000000590060019d000200000002001f000100000000001f0000008001000039000000400010043f000000000100041600000001022001900000002e0000c13d000000000101004b000000350000c13d00000002010000390000000201100188000000370000c13d00000000010004110000005b0110009c000000370000413d000000400100043d00000064021000390000005c03000041000000000032043500000044021000390000005d0300004100000000003204350000002402100039000000240300003900000000003204350000005e0200004100000000002104350000000402100039000000200300003900000000003204350000005902000041000000590310009c000000000102801900000040011002100000005f011001c70000016000010430000000000101004b000000350000c13d0000002001000039000001000010044300000120000004430000005a010000410000015f0001042e000000000100001900000160000104300000000001000031015e00440000040f00000020021000390000005903000041000000590420009c00000000020380190000000001010433000000590410009c000000000103801900000060011002100000004002200210000000000112019f0000015f0001042e0005000000000002000000000901001900000005040000310000000305000031000000600100004100000004021001870000000001000410000000000112004b000001200000613d000000000105004b0000000006000411000000ae0000613d000200000004001d000000400100043d0000006403100039000100000005001d00000000005304350000004403100039000400000002001d0000000000230435000000200210003900000061030000410000000000320435000300000006001d00000060036001970000002404100039000000000034043500000064030000390000000000310435000000620310009c000001060000813d000000a003100039000000400030043f0000005903000041000000590420009c000000000203801900000040022002100000000001010433000000590410009c00000000010380190000006001100210000000000121019f0000000002000414000000590420009c0000000002038019000000c002200210000000000121019f0000800a02000039000500000009001d015e01530000040f000000050900002900070000000103550000006001100270000100590010019d0000005901100198000000a60000613d0000003f031000390000006304300197000000400300043d0000000004430019000000000534004b00000000050000190000000105004039000000640640009c000001060000213d0000000105500190000001060000c13d000000400040043f0000000001130436000000070300036700000001050000310000001f0450018f0000000505500272000000970000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b0000008f0000413d000000000604004b000000a60000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000001012001900000011e0000613d0000000105000029000000650150009c0000000402000029000000030600002900000002040000290000010c0000813d000000000005041700000000050004140000000001000031000000000391004b000001320000413d000000590350009c0000010c0000213d0000000103400190000000660300004100000067040000410000000003046019000000c0045002100000006804400197000000000334019f0000000001910049000000590110019700000006011003f700000000013103af000000600d600197015e01580000040f00000000030100190000006003300270000100590030019d000000590330019700070000000103550000000102200190000001380000613d0000003f013000390000006302100197000000400100043d0000000002210019000000000412004b00000000040000190000000104004039000000640520009c000001060000213d0000000104400190000001060000c13d000000400020043f00000000023104360000001f043000390000000504400272000000e40000613d00000000050000310000000605500367000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000746004b000000dc0000413d000000000400004b000000e60000613d0000000104000031000000000443004b0000011e0000213d00000007050003670000001f0430018f0000000503300272000000f60000613d000000000600001900000005076002100000000008720019000000000775034f000000000707043b00000000007804350000000106600039000000000736004b000000ee0000413d000000000604004b000001050000613d0000000503300210000000000535034f00000000023200190000000303400210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d000000690100004100000000001004350000004101000039000000040010043f0000006a010000410000016000010430000000400100043d00000044021000390000006b0300004100000000003204350000002402100039000000080300003900000000003204350000005e0200004100000000002104350000000402100039000000200300003900000000003204350000005902000041000000590310009c000000000102801900000040011002100000006c011001c7000001600001043000000000010000190000016000010430000000400100043d00000044021000390000006d03000041000000000032043500000024021000390000001e0300003900000000003204350000005e0200004100000000002104350000000402100039000000200300003900000000003204350000005902000041000000590310009c000000000102801900000040011002100000006c011001c70000016000010430000000690100004100000000001004350000001101000039000000040010043f0000006a0100004100000160000104300000001f0430018f0000000502300272000001430000613d00000000050000190000000506500210000000000761034f000000000707043b00000000007604350000000105500039000000000625004b0000013c0000413d000000000504004b000001510000613d00000003044002100000000502200210000000000502043300000000054501cf000000000545022f000000000121034f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000006001300210000001600001043000000156002104210000000102000039000000000001042d0000000002000019000000000001042d000000000f0d00190000015c002104290000000102000039000000000001042d0000000002000019000000000001042d0000015e000004320000015f0001042e000001600001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000000010000666c61670000000000000000000000000000000000000000000000000000000054686973206d6574686f6420726571756972652073797374656d2063616c6c2008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff579952fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff6000000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000001000000000000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000004f766572666c6f7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004d736756616c756553696d756c61746f722063616c6c7320697473656c660000d44067f635588b53489f404b01f1d63a7a4aad6d0e7bbd1ac391aa57401c3dc1", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/NonceHolder.json b/src/deps/contracts/NonceHolder.json index 1fbd3df4..cf484dff 100644 --- a/src/deps/contracts/NonceHolder.json +++ b/src/deps/contracts/NonceHolder.json @@ -221,8 +221,8 @@ "type": "function" } ], - "bytecode": "0x0004000000000002000600000000000200030000000103550000006001100270000001030010019d000200000002001f000100000000001f0000008001000039000000400010043f00000001012001900000003e0000c13d0000000001000031000000040110008c000002100000413d0000000301000367000000000101043b000000e001100270000001050210009c000000460000213d0000010c0210009c000000720000a13d0000010d0210009c000001830000613d0000010e0210009c000001b40000613d0000010f0110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000101043b000001130210009c000002100000213d0000000000100435000000200000043f0000000001000019040503800000040f000000000101041a000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d0000002001000039000001000010044300000120000004430000010401000041000004060001042e000001060210009c000000a90000a13d000001070210009c000001db0000613d000001080210009c000001ff0000613d000001090110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000101043b000001130210009c000002100000213d0000000000100435000000200000043f0000000001000019040503800000040f000000000101041a0000008001100270000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e000001100210009c000000cc0000613d000001110110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000301043b000001130130009c000002100000213d000000000100041100000002020000390000000202200188000000920000c13d0000ffff0210008c000002180000213d000080060110008c0000028b0000c13d0000000000300435000000200000043f0000000001000019000600000003001d040503800000040f000000000101041a000500000001001d0000000601000029040503920000040f00000005030000290000012002300041000000000021041b0000008001300270000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000010a0210009c0000013a0000613d0000010b0110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000101043b000001130210009c000002100000213d040503a20000040f000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000400310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d000000000300041100000003010003670000002402100370000000000402043b0000000401100370000000000201043b00000002010000390000000201100188000000e80000c13d000001210130009c000002180000813d000400000004001d000300000002001d000000400400043d000600000004001d00000122010000410000000001140436000500000001001d000200000003001d00000113023001970000000401400039000100000002001d000000000021043500000103010000410000000002000414000001030320009c0000000002018019000001030340009c00000000010440190000004001100210000000c002200210000000000112019f00000123011001c70000800602000039040504000000040f000000060a000029000000000301001900000060033002700000010303300197000000400430008c000000400400003900000000040340190000001f0540018f0000000506400272000001130000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000010b0000413d000000000705004b000001220000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000002650000613d0000001f01400039000000e00210018f0000000001a20019000000000221004b00000000020000190000000102004039000001240410009c000001340000213d0000000102200190000001340000c13d000000400010043f000000400230008c000002100000413d000001250210009c000002cf0000a13d0000012a0100004100000000001004350000004101000039000000040010043f000001230100004100000407000104300000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000600310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000003010003670000000402100370000000000402043b000001130240009c000002100000213d0000004402100370000000000302043b000000000203004b0000000002000019000000010200c039000600000003001d000000000223004b000002100000c13d0000002401100370000000000101043b000400000001001d0000000000400435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039000500000004001d040504000000040f00000005030000290000000102200190000002100000613d000000000101043b000000000101041a00000116011001970000000402000029000000000121004b000002ab0000a13d0000000601000029000000000101004b000002cd0000c13d000000400200043d000600000002001d000001180100004100000000001204350000000401200039040503f10000040f000000060400002900000000014100490000010302000041000001030310009c0000000001028019000001030340009c000000000204401900000040022002100000006001100210000000000121019f00000407000104300000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000201043b000000020100003900000002011001880000019d0000c13d00000000010004110000ffff0110008c000002180000213d0000011b0120009c0000024d0000413d000000400100043d00000064021000390000011c03000041000000000032043500000044021000390000011d030000410000000000320435000000240210003900000030030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c000000000102801900000040011002100000011e011001c700000407000104300000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d000000000100041100000000001004350000000101000039000000200010043f0000000001000019040503800000040f00000004020000390000000302200367000000000202043b0000000000200435000000200010043f0000000001000019040503800000040f000000000101041a000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000400310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000003020003670000000401200370000000000101043b000001130310009c000002100000213d0000002402200370000000000202043b040503b50000040f000000000101004b0000000001000019000000010100c039000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002120000613d000000000100001900000407000104300000000002000411000000020100003900000002011001880000022d0000c13d0000ffff0120008c0000022d0000a13d000000400100043d00000064021000390000012b03000041000000000032043500000044021000390000012c030000410000000000320435000000240210003900000029030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c000000000102801900000040011002100000011e011001c70000040700010430000600000002001d0000000000200435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d00000004020000390000000302200367000000000202043b000000000101043b000000000101041a0000011603100197000000000223004b000002990000c13d00000006020000290000000000200435000000200000043f0000000101100039000600000001001d0000000001000019040503800000040f0000000602000029000000000021041b0000000001000019000004060001042e0000000001000411000500000001001d0000000000100435000000200000043f0000000001000019000600000002001d040503800000040f000000000101041a000400000001001d0000000501000029040503920000040f000000060200002900000004030000290000000002230019000000000021041b0000011601300197000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e000000400200043d0000001f0430018f0000000503300272000002720000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000026a0000413d000000000504004b000002810000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000103010000410000000103000031000001030430009c0000000003018019000001030420009c000000000102401900000040011002100000006002300210000000000112019f0000040700010430000000400100043d00000118020000410000000000210435000000040210003900000020030000390000000000320435000000240210003900000000000204350000010302000041000001030310009c000000000102801900000040011002100000011f011001c70000040700010430000000400100043d00000044021000390000011703000041000000000032043500000024021000390000000f030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c7000004070001043000000000003004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b00000004020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b000000000101041a000000000101004b0000016f0000c13d0000000601000029000000000101004b000002ef0000c13d0000000001000019000004060001042e0000004002100039000000400020043f00000000020a0433000000010320008c000002100000213d000000000221043600000005010000290000000001010433000000010310008c000002100000213d00000000001204350000000402000029000000000202004b000003010000c13d000000400100043d00000044021000390000012903000041000000000032043500000024021000390000001e030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c70000040700010430000000400100043d00000044021000390000011a03000041000000000032043500000024021000390000001d030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c70000040700010430000000000101004b0000031b0000c13d0000000301000029000000000101004b0000031b0000613d00000001010000290000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d0000000302000029000000010220008a000000000101043b000000000101041a0000011601100197000600000002001d000000000121004b0000034f0000a13d000000020100002900000000001004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b00000003020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b0000000402000029000000000021041b000000400100043d000000000021043500000103020000410000000003000414000001030430009c0000000003028019000001030410009c00000000010280190000004001100210000000c002300210000000000112019f00000127011001c70000800d020000390000000303000039000001280400004100000002050000290000000306000029040503fb0000040f0000000101200190000002100000613d000002cd0000013d000000010100002900000000001004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b00000006020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b000000000101041a000000000101004b0000031b0000c13d000000400100043d00000044021000390000012603000041000000000032043500000118020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c7000004070001043000000103020000410000000003000414000001030430009c0000000003028019000001030410009c00000000010280190000004001100210000000c002300210000000000112019f00000115011001c70000801002000039040504000000040f0000000102200190000003900000613d000000000101043b000000000001042d000000000100001900000407000104300000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003a00000613d000000000101043b000000000001042d0000000001000019000004070001043000000113011001970000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003b30000613d000000000101043b000000000101041a0000011601100197000000000001042d000000000100001900000407000104300002000000000002000200000002001d0000011301100197000100000001001d0000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003ef0000613d0000000102000039000000000101043b000000000101041a00000116011001970000000203000029000000000131004b000003ed0000213d000000010100002900000000001004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003ef0000613d000000000101043b00000002020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003ef0000613d000000000101043b000000000101041a000000000101004b0000000002000019000000010200c039000000010120018f000000000001042d0000000001000019000004070001043000000040021000390000012d03000041000000000032043500000020021000390000001c030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000003fe002104210000000102000039000000000001042d0000000002000019000000000001042d00000403002104230000000102000039000000000001042d0000000002000019000000000001042d0000040500000432000004060001042e0000040700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000006ee1dc1f00000000000000000000000000000000000000000000000000000000cab7e8ea00000000000000000000000000000000000000000000000000000000cab7e8eb00000000000000000000000000000000000000000000000000000000e1239cd800000000000000000000000000000000000000000000000000000000fb1a9a57000000000000000000000000000000000000000000000000000000006ee1dc2000000000000000000000000000000000000000000000000000000000896909dc0000000000000000000000000000000000000000000000000000000038a780910000000000000000000000000000000000000000000000000000000038a780920000000000000000000000000000000000000000000000000000000055d35d18000000000000000000000000000000000000000000000000000000005aa9b6b500000000000000000000000000000000000000000000000000000000155fd27a00000000000000000000000000000000000000000000000000000000306395c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000020000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff496e636f7272656374206e6f6e6365000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000546865206e6f6e636520776173206e6f7420736574206173207573656400000000000000000000000000000000000000000000000000000000000001000000016f6e636520697320746f6f2068696768000000000000000000000000000000005468652076616c756520666f7220696e6372656d656e74696e6720746865206e00000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100007b510fe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf50726576696f7573206e6f6e636520686173206e6f74206265656e20757365640200000000000000000000000000000000000020000000000000000000000000da2b716e5a5d5f602b9a5842bcd89c215b125258dfea271a03e5e0e801d93a8c4e6f6e63652076616c75652063616e6e6f742062652073657420746f203000004e487b710000000000000000000000000000000000000000000000000000000063616c6c20666c6167000000000000000000000000000000000000000000000054686973206d6574686f64207265717569726573207468652073797374656d2052657573696e67207468652073616d65206e6f6e636520747769636500000000e476c71854e2fbc5d8dca538f64ac8c70c17bb3080f393523b723341a1ffe42c", - "deployedBytecode": "0x0004000000000002000600000000000200030000000103550000006001100270000001030010019d000200000002001f000100000000001f0000008001000039000000400010043f00000001012001900000003e0000c13d0000000001000031000000040110008c000002100000413d0000000301000367000000000101043b000000e001100270000001050210009c000000460000213d0000010c0210009c000000720000a13d0000010d0210009c000001830000613d0000010e0210009c000001b40000613d0000010f0110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000101043b000001130210009c000002100000213d0000000000100435000000200000043f0000000001000019040503800000040f000000000101041a000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d0000002001000039000001000010044300000120000004430000010401000041000004060001042e000001060210009c000000a90000a13d000001070210009c000001db0000613d000001080210009c000001ff0000613d000001090110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000101043b000001130210009c000002100000213d0000000000100435000000200000043f0000000001000019040503800000040f000000000101041a0000008001100270000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e000001100210009c000000cc0000613d000001110110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000301043b000001130130009c000002100000213d000000000100041100000002020000390000000202200188000000920000c13d0000ffff0210008c000002180000213d000080060110008c0000028b0000c13d0000000000300435000000200000043f0000000001000019000600000003001d040503800000040f000000000101041a000500000001001d0000000601000029040503920000040f00000005030000290000012002300041000000000021041b0000008001300270000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000010a0210009c0000013a0000613d0000010b0110009c000002100000c13d0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000101043b000001130210009c000002100000213d040503a20000040f000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000400310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d000000000300041100000003010003670000002402100370000000000402043b0000000401100370000000000201043b00000002010000390000000201100188000000e80000c13d000001210130009c000002180000813d000400000004001d000300000002001d000000400400043d000600000004001d00000122010000410000000001140436000500000001001d000200000003001d00000113023001970000000401400039000100000002001d000000000021043500000103010000410000000002000414000001030320009c0000000002018019000001030340009c00000000010440190000004001100210000000c002200210000000000112019f00000123011001c70000800602000039040504000000040f000000060a000029000000000301001900000060033002700000010303300197000000400430008c000000400400003900000000040340190000001f0540018f0000000506400272000001130000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000010b0000413d000000000705004b000001220000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000002650000613d0000001f01400039000000e00210018f0000000001a20019000000000221004b00000000020000190000000102004039000001240410009c000001340000213d0000000102200190000001340000c13d000000400010043f000000400230008c000002100000413d000001250210009c000002cf0000a13d0000012a0100004100000000001004350000004101000039000000040010043f000001230100004100000407000104300000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000600310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000003010003670000000402100370000000000402043b000001130240009c000002100000213d0000004402100370000000000302043b000000000203004b0000000002000019000000010200c039000600000003001d000000000223004b000002100000c13d0000002401100370000000000101043b000400000001001d0000000000400435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039000500000004001d040504000000040f00000005030000290000000102200190000002100000613d000000000101043b000000000101041a00000116011001970000000402000029000000000121004b000002ab0000a13d0000000601000029000000000101004b000002cd0000c13d000000400200043d000600000002001d000001180100004100000000001204350000000401200039040503f10000040f000000060400002900000000014100490000010302000041000001030310009c0000000001028019000001030340009c000000000204401900000040022002100000006001100210000000000121019f00000407000104300000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000004010000390000000301100367000000000201043b000000020100003900000002011001880000019d0000c13d00000000010004110000ffff0110008c000002180000213d0000011b0120009c0000024d0000413d000000400100043d00000064021000390000011c03000041000000000032043500000044021000390000011d030000410000000000320435000000240210003900000030030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c000000000102801900000040011002100000011e011001c700000407000104300000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d000000000100041100000000001004350000000101000039000000200010043f0000000001000019040503800000040f00000004020000390000000302200367000000000202043b0000000000200435000000200010043f0000000001000019040503800000040f000000000101041a000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000400310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002100000c13d00000003020003670000000401200370000000000101043b000001130310009c000002100000213d0000002402200370000000000202043b040503b50000040f000000000101004b0000000001000019000000010100c039000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e0000000001000416000000000101004b000002100000c13d000000040100008a00000000011000310000011202000041000000200310008c000000000300001900000000030240190000011201100197000000000401004b000000000200a019000001120110009c00000000010300190000000001026019000000000101004b000002120000613d000000000100001900000407000104300000000002000411000000020100003900000002011001880000022d0000c13d0000ffff0120008c0000022d0000a13d000000400100043d00000064021000390000012b03000041000000000032043500000044021000390000012c030000410000000000320435000000240210003900000029030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c000000000102801900000040011002100000011e011001c70000040700010430000600000002001d0000000000200435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d00000004020000390000000302200367000000000202043b000000000101043b000000000101041a0000011603100197000000000223004b000002990000c13d00000006020000290000000000200435000000200000043f0000000101100039000600000001001d0000000001000019040503800000040f0000000602000029000000000021041b0000000001000019000004060001042e0000000001000411000500000001001d0000000000100435000000200000043f0000000001000019000600000002001d040503800000040f000000000101041a000400000001001d0000000501000029040503920000040f000000060200002900000004030000290000000002230019000000000021041b0000011601300197000000400200043d00000000001204350000010301000041000001030320009c0000000001024019000000400110021000000114011001c7000004060001042e000000400200043d0000001f0430018f0000000503300272000002720000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000026a0000413d000000000504004b000002810000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000103010000410000000103000031000001030430009c0000000003018019000001030420009c000000000102401900000040011002100000006002300210000000000112019f0000040700010430000000400100043d00000118020000410000000000210435000000040210003900000020030000390000000000320435000000240210003900000000000204350000010302000041000001030310009c000000000102801900000040011002100000011f011001c70000040700010430000000400100043d00000044021000390000011703000041000000000032043500000024021000390000000f030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c7000004070001043000000000003004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b00000004020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b000000000101041a000000000101004b0000016f0000c13d0000000601000029000000000101004b000002ef0000c13d0000000001000019000004060001042e0000004002100039000000400020043f00000000020a0433000000010320008c000002100000213d000000000221043600000005010000290000000001010433000000010310008c000002100000213d00000000001204350000000402000029000000000202004b000003010000c13d000000400100043d00000044021000390000012903000041000000000032043500000024021000390000001e030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c70000040700010430000000400100043d00000044021000390000011a03000041000000000032043500000024021000390000001d030000390000000000320435000001180200004100000000002104350000000402100039000000200300003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c70000040700010430000000000101004b0000031b0000c13d0000000301000029000000000101004b0000031b0000613d00000001010000290000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d0000000302000029000000010220008a000000000101043b000000000101041a0000011601100197000600000002001d000000000121004b0000034f0000a13d000000020100002900000000001004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b00000003020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b0000000402000029000000000021041b000000400100043d000000000021043500000103020000410000000003000414000001030430009c0000000003028019000001030410009c00000000010280190000004001100210000000c002300210000000000112019f00000127011001c70000800d020000390000000303000039000001280400004100000002050000290000000306000029040503fb0000040f0000000101200190000002100000613d000002cd0000013d000000010100002900000000001004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b00000006020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000002100000613d000000000101043b000000000101041a000000000101004b0000031b0000c13d000000400100043d00000044021000390000012603000041000000000032043500000118020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000010302000041000001030310009c0000000001028019000000400110021000000119011001c7000004070001043000000103020000410000000003000414000001030430009c0000000003028019000001030410009c00000000010280190000004001100210000000c002300210000000000112019f00000115011001c70000801002000039040504000000040f0000000102200190000003900000613d000000000101043b000000000001042d000000000100001900000407000104300000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003a00000613d000000000101043b000000000001042d0000000001000019000004070001043000000113011001970000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003b30000613d000000000101043b000000000101041a0000011601100197000000000001042d000000000100001900000407000104300002000000000002000200000002001d0000011301100197000100000001001d0000000000100435000000200000043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003ef0000613d0000000102000039000000000101043b000000000101041a00000116011001970000000203000029000000000131004b000003ed0000213d000000010100002900000000001004350000000101000039000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003ef0000613d000000000101043b00000002020000290000000000200435000000200010043f00000103010000410000000002000414000001030320009c0000000001024019000000c00110021000000115011001c70000801002000039040504000000040f0000000102200190000003ef0000613d000000000101043b000000000101041a000000000101004b0000000002000019000000010200c039000000010120018f000000000001042d0000000001000019000004070001043000000040021000390000012d03000041000000000032043500000020021000390000001c030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000003fe002104210000000102000039000000000001042d0000000002000019000000000001042d00000403002104230000000102000039000000000001042d0000000002000019000000000001042d0000040500000432000004060001042e0000040700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000006ee1dc1f00000000000000000000000000000000000000000000000000000000cab7e8ea00000000000000000000000000000000000000000000000000000000cab7e8eb00000000000000000000000000000000000000000000000000000000e1239cd800000000000000000000000000000000000000000000000000000000fb1a9a57000000000000000000000000000000000000000000000000000000006ee1dc2000000000000000000000000000000000000000000000000000000000896909dc0000000000000000000000000000000000000000000000000000000038a780910000000000000000000000000000000000000000000000000000000038a780920000000000000000000000000000000000000000000000000000000055d35d18000000000000000000000000000000000000000000000000000000005aa9b6b500000000000000000000000000000000000000000000000000000000155fd27a00000000000000000000000000000000000000000000000000000000306395c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000020000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff496e636f7272656374206e6f6e6365000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000546865206e6f6e636520776173206e6f7420736574206173207573656400000000000000000000000000000000000000000000000000000000000001000000016f6e636520697320746f6f2068696768000000000000000000000000000000005468652076616c756520666f7220696e6372656d656e74696e6720746865206e00000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100007b510fe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf50726576696f7573206e6f6e636520686173206e6f74206265656e20757365640200000000000000000000000000000000000020000000000000000000000000da2b716e5a5d5f602b9a5842bcd89c215b125258dfea271a03e5e0e801d93a8c4e6f6e63652076616c75652063616e6e6f742062652073657420746f203000004e487b710000000000000000000000000000000000000000000000000000000063616c6c20666c6167000000000000000000000000000000000000000000000054686973206d6574686f64207265717569726573207468652073797374656d2052657573696e67207468652073616d65206e6f6e636520747769636500000000e476c71854e2fbc5d8dca538f64ac8c70c17bb3080f393523b723341a1ffe42c", + "bytecode": "0x0004000000000002000600000000000200030000000103550000006001100270000001020010019d000200000002001f000100000000001f0000008001000039000000400010043f00000001012001900000003e0000c13d0000000001000031000000040110008c000002080000413d0000000301000367000000000101043b000000e001100270000001040210009c000000460000213d0000010b0210009c000000720000a13d0000010c0210009c0000017b0000613d0000010d0210009c000001ac0000613d0000010e0110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d0000000000100435000000200000043f00000000010000190404037f0000040f000000000101041a000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d0000002001000039000001000010044300000120000004430000010301000041000004050001042e000001050210009c000000a10000a13d000001060210009c000001d30000613d000001070210009c000001f70000613d000001080110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d0000000000100435000000200000043f00000000010000190404037f0000040f000000000101041a0000008001100270000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000010f0210009c000000c40000613d000001100110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d0000000002000411000080060220008c0000025d0000c13d000600000001001d040403910000040f000000000101041a000500000001001d0000000601000029040403910000040f00000005030000290000012002300041000000000021041b0000008001300270000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e000001090210009c000001320000613d0000010a0110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d040403a10000040f000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000400310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d000000000300041100000003010003670000002402100370000000000402043b0000000401100370000000000201043b00000002010000390000000201100188000000e00000c13d000001210130009c000002100000813d000400000004001d000300000002001d000000400400043d000600000004001d00000122010000410000000001140436000500000001001d000200000003001d00000112023001970000000401400039000100000002001d000000000021043500000102010000410000000002000414000001020320009c0000000002018019000001020340009c00000000010440190000004001100210000000c002200210000000000112019f00000123011001c70000800602000039040403ff0000040f000000060a000029000000000301001900000060033002700000010203300197000000400430008c000000400400003900000000040340190000001f0540018f00000005064002720000010b0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001030000413d000000000705004b0000011a0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000002720000613d0000001f01400039000000e00210018f0000000001a20019000000000221004b00000000020000190000000102004039000001240410009c0000012c0000213d00000001022001900000012c0000c13d000000400010043f000000400230008c000002080000413d000001250210009c000002ce0000a13d0000012a0100004100000000001004350000004101000039000000040010043f000001230100004100000406000104300000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000600310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000003010003670000000402100370000000000402043b000001120240009c000002080000213d0000004402100370000000000302043b000000000203004b0000000002000019000000010200c039000600000003001d000000000223004b000002080000c13d0000002401100370000000000101043b000400000001001d0000000000400435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039000500000004001d040403ff0000040f00000005030000290000000102200190000002080000613d000000000101043b000000000101041a00000115011001970000000402000029000000000121004b000002aa0000a13d0000000601000029000000000101004b000002cc0000c13d000000400200043d000600000002001d000001170100004100000000001204350000000401200039040403f00000040f000000060400002900000000014100490000010202000041000001020310009c0000000001028019000001020340009c000000000204401900000040022002100000006001100210000000000121019f00000406000104300000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000201043b00000002010000390000000201100188000001950000c13d00000000010004110000ffff0110008c000002100000213d0000011a0120009c000002450000413d000000400100043d00000064021000390000011b03000041000000000032043500000044021000390000011c030000410000000000320435000000240210003900000030030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c000000000102801900000040011002100000011d011001c700000406000104300000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d000000000100041100000000001004350000000101000039000000200010043f00000000010000190404037f0000040f00000004020000390000000302200367000000000202043b0000000000200435000000200010043f00000000010000190404037f0000040f000000000101041a000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000400310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000003020003670000000401200370000000000101043b000001120310009c000002080000213d0000002402200370000000000202043b040403b40000040f000000000101004b0000000001000019000000010100c039000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b0000020a0000613d00000000010000190000040600010430000000000200041100000002010000390000000201100188000002250000c13d0000ffff0120008c000002250000a13d000000400100043d00000064021000390000012b03000041000000000032043500000044021000390000012c030000410000000000320435000000240210003900000024030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c000000000102801900000040011002100000011d011001c70000040600010430000600000002001d0000000000200435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d00000004020000390000000302200367000000000202043b000000000101043b000000000101041a0000011503100197000000000223004b000002980000c13d00000006020000290000000000200435000000200000043f0000000101100039000600000001001d00000000010000190404037f0000040f0000000602000029000000000021041b0000000001000019000004050001042e0000000001000411000500000001001d0000000000100435000000200000043f0000000001000019000600000002001d0404037f0000040f000000000101041a000400000001001d0000000501000029040403910000040f000000060200002900000004030000290000000002230019000000000021041b0000011501300197000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e000000400100043d00000064021000390000011e03000041000000000032043500000044021000390000011f03000041000000000032043500000024021000390000003d030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c000000000102801900000040011002100000011d011001c70000040600010430000000400200043d0000001f0430018f00000005033002720000027f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000002770000413d000000000504004b0000028e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000102010000410000000103000031000001020430009c0000000003018019000001020420009c000000000102401900000040011002100000006002300210000000000112019f0000040600010430000000400100043d00000044021000390000011603000041000000000032043500000024021000390000000f030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c7000004060001043000000000003004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b00000004020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b000000000101041a000000000101004b000001670000c13d0000000601000029000000000101004b000002ee0000c13d0000000001000019000004050001042e0000004002100039000000400020043f00000000020a0433000000010320008c000002080000213d000000000221043600000005010000290000000001010433000000010310008c000002080000213d00000000001204350000000402000029000000000202004b000003000000c13d000000400100043d00000044021000390000012903000041000000000032043500000024021000390000001e030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c70000040600010430000000400100043d00000044021000390000011903000041000000000032043500000024021000390000001d030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c70000040600010430000000000101004b0000031a0000c13d0000000301000029000000000101004b0000031a0000613d00000001010000290000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d0000000302000029000000010220008a000000000101043b000000000101041a0000011501100197000600000002001d000000000121004b0000034e0000a13d000000020100002900000000001004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b00000003020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b0000000402000029000000000021041b000000400100043d000000000021043500000102020000410000000003000414000001020430009c0000000003028019000001020410009c00000000010280190000004001100210000000c002300210000000000112019f00000127011001c70000800d020000390000000303000039000001280400004100000002050000290000000306000029040403fa0000040f0000000101200190000002080000613d000002cc0000013d000000010100002900000000001004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b00000006020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b000000000101041a000000000101004b0000031a0000c13d000000400100043d00000044021000390000012603000041000000000032043500000117020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c7000004060001043000000102020000410000000003000414000001020430009c0000000003028019000001020410009c00000000010280190000004001100210000000c002300210000000000112019f00000114011001c70000801002000039040403ff0000040f00000001022001900000038f0000613d000000000101043b000000000001042d000000000100001900000406000104300000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f00000001022001900000039f0000613d000000000101043b000000000001042d0000000001000019000004060001043000000112011001970000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003b20000613d000000000101043b000000000101041a0000011501100197000000000001042d000000000100001900000406000104300002000000000002000200000002001d0000011201100197000100000001001d0000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003ee0000613d0000000102000039000000000101043b000000000101041a00000115011001970000000203000029000000000131004b000003ec0000213d000000010100002900000000001004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003ee0000613d000000000101043b00000002020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003ee0000613d000000000101043b000000000101041a000000000101004b0000000002000019000000010200c039000000010120018f000000000001042d0000000001000019000004060001043000000040021000390000012d03000041000000000032043500000020021000390000001c030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000003fd002104210000000102000039000000000001042d0000000002000019000000000001042d00000402002104230000000102000039000000000001042d0000000002000019000000000001042d0000040400000432000004050001042e0000040600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000006ee1dc1f00000000000000000000000000000000000000000000000000000000cab7e8ea00000000000000000000000000000000000000000000000000000000cab7e8eb00000000000000000000000000000000000000000000000000000000e1239cd800000000000000000000000000000000000000000000000000000000fb1a9a57000000000000000000000000000000000000000000000000000000006ee1dc2000000000000000000000000000000000000000000000000000000000896909dc0000000000000000000000000000000000000000000000000000000038a780910000000000000000000000000000000000000000000000000000000038a780920000000000000000000000000000000000000000000000000000000055d35d18000000000000000000000000000000000000000000000000000000005aa9b6b500000000000000000000000000000000000000000000000000000000155fd27a00000000000000000000000000000000000000000000000000000000306395c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000020000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff496e636f7272656374206e6f6e6365000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000546865206e6f6e636520776173206e6f7420736574206173207573656400000000000000000000000000000000000000000000000000000000000001000000016f6e636520697320746f6f2068696768000000000000000000000000000000005468652076616c756520666f7220696e6372656d656e74696e6720746865206e00000000000000000000000000000000000000840000000000000000000000006e6372656d656e7420746865206465706c6f796d656e74206e6f6e63650000004f6e6c792074686520636f6e7472616374206465706c6f7965722063616e2069000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100007b510fe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf50726576696f7573206e6f6e636520686173206e6f74206265656e20757365640200000000000000000000000000000000000020000000000000000000000000da2b716e5a5d5f602b9a5842bcd89c215b125258dfea271a03e5e0e801d93a8c4e6f6e63652076616c75652063616e6e6f742062652073657420746f203000004e487b7100000000000000000000000000000000000000000000000000000000666c61670000000000000000000000000000000000000000000000000000000054686973206d6574686f6420726571756972652073797374656d2063616c6c2052657573696e67207468652073616d65206e6f6e636520747769636500000000501c26608344a09e93fd75d75fa0338d79ed540145d531243c88c8adba134376", + "deployedBytecode": "0x0004000000000002000600000000000200030000000103550000006001100270000001020010019d000200000002001f000100000000001f0000008001000039000000400010043f00000001012001900000003e0000c13d0000000001000031000000040110008c000002080000413d0000000301000367000000000101043b000000e001100270000001040210009c000000460000213d0000010b0210009c000000720000a13d0000010c0210009c0000017b0000613d0000010d0210009c000001ac0000613d0000010e0110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d0000000000100435000000200000043f00000000010000190404037f0000040f000000000101041a000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d0000002001000039000001000010044300000120000004430000010301000041000004050001042e000001050210009c000000a10000a13d000001060210009c000001d30000613d000001070210009c000001f70000613d000001080110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d0000000000100435000000200000043f00000000010000190404037f0000040f000000000101041a0000008001100270000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000010f0210009c000000c40000613d000001100110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d0000000002000411000080060220008c0000025d0000c13d000600000001001d040403910000040f000000000101041a000500000001001d0000000601000029040403910000040f00000005030000290000012002300041000000000021041b0000008001300270000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e000001090210009c000001320000613d0000010a0110009c000002080000c13d0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000101043b000001120210009c000002080000213d040403a10000040f000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000400310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d000000000300041100000003010003670000002402100370000000000402043b0000000401100370000000000201043b00000002010000390000000201100188000000e00000c13d000001210130009c000002100000813d000400000004001d000300000002001d000000400400043d000600000004001d00000122010000410000000001140436000500000001001d000200000003001d00000112023001970000000401400039000100000002001d000000000021043500000102010000410000000002000414000001020320009c0000000002018019000001020340009c00000000010440190000004001100210000000c002200210000000000112019f00000123011001c70000800602000039040403ff0000040f000000060a000029000000000301001900000060033002700000010203300197000000400430008c000000400400003900000000040340190000001f0540018f00000005064002720000010b0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001030000413d000000000705004b0000011a0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0000000102200190000002720000613d0000001f01400039000000e00210018f0000000001a20019000000000221004b00000000020000190000000102004039000001240410009c0000012c0000213d00000001022001900000012c0000c13d000000400010043f000000400230008c000002080000413d000001250210009c000002ce0000a13d0000012a0100004100000000001004350000004101000039000000040010043f000001230100004100000406000104300000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000600310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000003010003670000000402100370000000000402043b000001120240009c000002080000213d0000004402100370000000000302043b000000000203004b0000000002000019000000010200c039000600000003001d000000000223004b000002080000c13d0000002401100370000000000101043b000400000001001d0000000000400435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039000500000004001d040403ff0000040f00000005030000290000000102200190000002080000613d000000000101043b000000000101041a00000115011001970000000402000029000000000121004b000002aa0000a13d0000000601000029000000000101004b000002cc0000c13d000000400200043d000600000002001d000001170100004100000000001204350000000401200039040403f00000040f000000060400002900000000014100490000010202000041000001020310009c0000000001028019000001020340009c000000000204401900000040022002100000006001100210000000000121019f00000406000104300000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000004010000390000000301100367000000000201043b00000002010000390000000201100188000001950000c13d00000000010004110000ffff0110008c000002100000213d0000011a0120009c000002450000413d000000400100043d00000064021000390000011b03000041000000000032043500000044021000390000011c030000410000000000320435000000240210003900000030030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c000000000102801900000040011002100000011d011001c700000406000104300000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d000000000100041100000000001004350000000101000039000000200010043f00000000010000190404037f0000040f00000004020000390000000302200367000000000202043b0000000000200435000000200010043f00000000010000190404037f0000040f000000000101041a000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000400310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b000002080000c13d00000003020003670000000401200370000000000101043b000001120310009c000002080000213d0000002402200370000000000202043b040403b40000040f000000000101004b0000000001000019000000010100c039000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e0000000001000416000000000101004b000002080000c13d000000040100008a00000000011000310000011102000041000000200310008c000000000300001900000000030240190000011101100197000000000401004b000000000200a019000001110110009c00000000010300190000000001026019000000000101004b0000020a0000613d00000000010000190000040600010430000000000200041100000002010000390000000201100188000002250000c13d0000ffff0120008c000002250000a13d000000400100043d00000064021000390000012b03000041000000000032043500000044021000390000012c030000410000000000320435000000240210003900000024030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c000000000102801900000040011002100000011d011001c70000040600010430000600000002001d0000000000200435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d00000004020000390000000302200367000000000202043b000000000101043b000000000101041a0000011503100197000000000223004b000002980000c13d00000006020000290000000000200435000000200000043f0000000101100039000600000001001d00000000010000190404037f0000040f0000000602000029000000000021041b0000000001000019000004050001042e0000000001000411000500000001001d0000000000100435000000200000043f0000000001000019000600000002001d0404037f0000040f000000000101041a000400000001001d0000000501000029040403910000040f000000060200002900000004030000290000000002230019000000000021041b0000011501300197000000400200043d00000000001204350000010201000041000001020320009c0000000001024019000000400110021000000113011001c7000004050001042e000000400100043d00000064021000390000011e03000041000000000032043500000044021000390000011f03000041000000000032043500000024021000390000003d030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c000000000102801900000040011002100000011d011001c70000040600010430000000400200043d0000001f0430018f00000005033002720000027f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000002770000413d000000000504004b0000028e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000102010000410000000103000031000001020430009c0000000003018019000001020420009c000000000102401900000040011002100000006002300210000000000112019f0000040600010430000000400100043d00000044021000390000011603000041000000000032043500000024021000390000000f030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c7000004060001043000000000003004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b00000004020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b000000000101041a000000000101004b000001670000c13d0000000601000029000000000101004b000002ee0000c13d0000000001000019000004050001042e0000004002100039000000400020043f00000000020a0433000000010320008c000002080000213d000000000221043600000005010000290000000001010433000000010310008c000002080000213d00000000001204350000000402000029000000000202004b000003000000c13d000000400100043d00000044021000390000012903000041000000000032043500000024021000390000001e030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c70000040600010430000000400100043d00000044021000390000011903000041000000000032043500000024021000390000001d030000390000000000320435000001170200004100000000002104350000000402100039000000200300003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c70000040600010430000000000101004b0000031a0000c13d0000000301000029000000000101004b0000031a0000613d00000001010000290000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d0000000302000029000000010220008a000000000101043b000000000101041a0000011501100197000600000002001d000000000121004b0000034e0000a13d000000020100002900000000001004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b00000003020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b0000000402000029000000000021041b000000400100043d000000000021043500000102020000410000000003000414000001020430009c0000000003028019000001020410009c00000000010280190000004001100210000000c002300210000000000112019f00000127011001c70000800d020000390000000303000039000001280400004100000002050000290000000306000029040403fa0000040f0000000101200190000002080000613d000002cc0000013d000000010100002900000000001004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b00000006020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000002080000613d000000000101043b000000000101041a000000000101004b0000031a0000c13d000000400100043d00000044021000390000012603000041000000000032043500000117020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000010202000041000001020310009c0000000001028019000000400110021000000118011001c7000004060001043000000102020000410000000003000414000001020430009c0000000003028019000001020410009c00000000010280190000004001100210000000c002300210000000000112019f00000114011001c70000801002000039040403ff0000040f00000001022001900000038f0000613d000000000101043b000000000001042d000000000100001900000406000104300000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f00000001022001900000039f0000613d000000000101043b000000000001042d0000000001000019000004060001043000000112011001970000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003b20000613d000000000101043b000000000101041a0000011501100197000000000001042d000000000100001900000406000104300002000000000002000200000002001d0000011201100197000100000001001d0000000000100435000000200000043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003ee0000613d0000000102000039000000000101043b000000000101041a00000115011001970000000203000029000000000131004b000003ec0000213d000000010100002900000000001004350000000101000039000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003ee0000613d000000000101043b00000002020000290000000000200435000000200010043f00000102010000410000000002000414000001020320009c0000000001024019000000c00110021000000114011001c70000801002000039040403ff0000040f0000000102200190000003ee0000613d000000000101043b000000000101041a000000000101004b0000000002000019000000010200c039000000010120018f000000000001042d0000000001000019000004060001043000000040021000390000012d03000041000000000032043500000020021000390000001c030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000003fd002104210000000102000039000000000001042d0000000002000019000000000001042d00000402002104230000000102000039000000000001042d0000000002000019000000000001042d0000040400000432000004050001042e0000040600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000006ee1dc1f00000000000000000000000000000000000000000000000000000000cab7e8ea00000000000000000000000000000000000000000000000000000000cab7e8eb00000000000000000000000000000000000000000000000000000000e1239cd800000000000000000000000000000000000000000000000000000000fb1a9a57000000000000000000000000000000000000000000000000000000006ee1dc2000000000000000000000000000000000000000000000000000000000896909dc0000000000000000000000000000000000000000000000000000000038a780910000000000000000000000000000000000000000000000000000000038a780920000000000000000000000000000000000000000000000000000000055d35d18000000000000000000000000000000000000000000000000000000005aa9b6b500000000000000000000000000000000000000000000000000000000155fd27a00000000000000000000000000000000000000000000000000000000306395c68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000020000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff496e636f7272656374206e6f6e6365000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000546865206e6f6e636520776173206e6f7420736574206173207573656400000000000000000000000000000000000000000000000000000000000001000000016f6e636520697320746f6f2068696768000000000000000000000000000000005468652076616c756520666f7220696e6372656d656e74696e6720746865206e00000000000000000000000000000000000000840000000000000000000000006e6372656d656e7420746865206465706c6f796d656e74206e6f6e63650000004f6e6c792074686520636f6e7472616374206465706c6f7965722063616e2069000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100007b510fe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf50726576696f7573206e6f6e636520686173206e6f74206265656e20757365640200000000000000000000000000000000000020000000000000000000000000da2b716e5a5d5f602b9a5842bcd89c215b125258dfea271a03e5e0e801d93a8c4e6f6e63652076616c75652063616e6e6f742062652073657420746f203000004e487b7100000000000000000000000000000000000000000000000000000000666c61670000000000000000000000000000000000000000000000000000000054686973206d6574686f6420726571756972652073797374656d2063616c6c2052657573696e67207468652073616d65206e6f6e636520747769636500000000501c26608344a09e93fd75d75fa0338d79ed540145d531243c88c8adba134376", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/SHA256.yul.zbin b/src/deps/contracts/SHA256.yul.zbin index bdf45940..81eea3d7 100644 Binary files a/src/deps/contracts/SHA256.yul.zbin and b/src/deps/contracts/SHA256.yul.zbin differ diff --git a/src/deps/contracts/SystemContext.json b/src/deps/contracts/SystemContext.json index 5a908d87..35112544 100644 --- a/src/deps/contracts/SystemContext.json +++ b/src/deps/contracts/SystemContext.json @@ -244,6 +244,13 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "incrementTxNumberInBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "origin", @@ -259,7 +266,14 @@ }, { "inputs": [], - "name": "publishBatchDataToL1", + "name": "publishTimestampDataToL1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "resetTxNumberInBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -351,6 +365,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "txNumberInBlock", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -375,8 +402,8 @@ "type": "function" } ], - "bytecode": "0x0002000000000002000600000000000200010000000103550000006001100270000001c30010019d0000008001000039000000400010043f0000000102200190000000370000c13d0000000002000031000000040220008c0000035e0000413d0000000102000367000000000202043b000000e002200270000001c70320009c0000004a0000a13d000001c80120009c0000006f0000213d000001d00120009c000000ac0000213d000001d40120009c000001900000613d000001d50120009c000001940000613d000001d60120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000101000039000000000101041a000001e901100197000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000001c3010000410000000302000039000000000012041b0000000401000039000000000201041a000001c40220019700008001022001bf000000000021041b000001c5010000410000000502000039000000000012041b000000200100003900000100001004430000012000000443000001c601000041000007080001042e000001d70320009c0000007b0000a13d000001d80120009c000000ce0000213d000001dc0120009c000001b20000613d000001dd0120009c000001ce0000613d000001de0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000601000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e000001c90120009c000001110000213d000001cd0120009c000002110000613d000001ce0120009c000002350000613d000001cf0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000003060000013d000001df0320009c000001320000a13d000001e00120009c000002520000613d000001e10120009c0000027a0000613d000001e20120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000600310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000001000411000080010110008c00000000010000190000000101006039070705dd0000040f000000400100043d070705f20000040f00000001010003670000002402100370000000000202043b00000080022002100000000401100370000000000101043b000001e701100197000000000121019f0000000702000039000000000012041b00000044010000390000000101100367000000000101043b0000000602000039000000000012041b0000000001000019000007080001042e000001d10120009c000002950000613d000001d20120009c000002af0000613d000001d30120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000401000039000000000101041a000001e901100197000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e000001d90120009c000002cc0000613d000001da0120009c000002e70000613d000001db0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000004010000390000000101100367000000000101043b000000400200043d000001ea0320009c000002740000213d0000010c03000039000000000503041a0000004003200039000000400030043f0000010d03000039000000000403041a000001e7034001970000000006320436000000800340027000000000003604350000008006500270000000000516004b0000000005000019000004050000a13d0000000005160049000001010550008c0000000005000019000004050000813d0000000002020433000001e702200197000000000221004b000003c30000813d00000000001004350000000801000039000000200010043f000001c3010000410000000002000414000001c30320009c0000000001024019000000c001100210000001ed011001c70000801002000039070707020000040f00000001022001900000035e0000613d000000000101043b000000000501041a000004050000013d000001ca0120009c000003030000613d000001cb0120009c000003210000613d000001cc0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000201000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e000001e30320009c000003440000613d000001e40220009c0000035e0000c13d0000000002000416000000000202004b0000035e0000c13d000000040200008a0000000002200031000001e503000041000000a00420008c00000000040000190000000004034019000001e502200197000000000502004b000000000300a019000001e50220009c00000000020400190000000002036019000000000202004b0000035e0000c13d00000001030003670000000402300370000000000502043b000001e70250009c0000035e0000213d0000002402300370000000000602043b000001e70260009c0000035e0000213d0000004402300370000000000702043b0000006402300370000000000202043b000000000402004b0000000004000019000000010400c039000000000442004b0000035e0000c13d0000008403300370000000000403043b000001e70340009c0000035e0000213d0000000003000411000080010330008c000003600000c13d000300000007001d000400000004001d000600000006001d000500000005001d000000000302004b0000041e0000c13d000000400400043d000001ea0340009c000002740000213d0000004003400039000000400030043f0000000903000039000100000003001d000000000503041a000000200640003900000080035002700000000000360435000001e706500197000200000006001d0000000000640435000001e70450009c000004570000213d0000000204000029000000000404004b0000045d0000c13d000000000102004b000004ab0000c13d000000400100043d000000640210003900000211030000410000000000320435000000440210003900000212030000410000000000320435000000240210003900000021030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000001000416000000000101004b0000035e0000c13d000003240000013d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0707061c0000040f000001e702200197000000400300043d00000020043000390000000000240435000001e7011001970000000000130435000001c301000041000001c30230009c00000000010340190000004001100210000001e8011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000010c01000039000000000101041a0000008001100270000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d000000400200043d0000000001000411000080010110008c000003720000c13d000001ea0120009c000002740000213d0000004001200039000000400010043f0000000701000039000000000301041a000000200420003900000080013002700000000000140435000001e7073001970000000000720435000000400200043d000001ea0420009c000002740000213d0000004004200039000000400040043f0000000904000039000000000404041a000000200520003900000080064002700000000000650435000001e7044001970000000000420435000001e70230009c000003dd0000213d000000400100043d0000006402100039000001f10300004100000000003204350000004402100039000001f203000041000000000032043500000024021000390000002f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000004010000390000000101100367000000000201043b000001e90120009c0000035e0000213d0000000001000411000080010110008c00000000010000190000000101006039000600000002001d070705dd0000040f0000000101000039000000000201041a000001c4022001970000000603000029000000000232019f000000000021041b0000000001000019000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000001000411000080010110008c00000000010000190000000101006039070705dd0000040f00000004010000390000000101100367000000000101043b0000000202000039000000000012041b0000000001000019000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000001000411000080010110008c000003600000c13d0000000a05000039000000000305041a000000400200043d0000002001200039000000000031043500000004030000390000000103300367000000000303043b0000004004200039000000000034043500000040030000390000000000320435000001f40320009c000003830000a13d0000020b0100004100000000001004350000004101000039000000040010043f0000020c0100004100000709000104300000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000501000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d000000400100043d000000000200041a0000000000210435000001c302000041000001c30310009c00000000010280190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d070706090000040f000001e7022001970000008001100210000000000121019f000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000301000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000010c01000039000000000101041a000001e701100197000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d070706090000040f000001e702200197000000400300043d00000020043000390000000000240435000001e7011001970000000000130435000001c301000041000001c30230009c00000000010340190000004001100210000001e8011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000004010000390000000101100367000000000101043b00000000001004350000000801000039000000200010043f00000040020000390000000001000019070705c70000040f000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000800310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000001010003670000002402100370000000000402043b000001e70240009c0000035e0000213d0000004401100370000000000301043b000001e70130009c0000038c0000a13d00000000010000190000070900010430000000400100043d0000004402100039000001ee03000041000000000032043500000024021000390000001f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f0011001c700000709000104300000004401200039000001ee03000041000000000031043500000024012000390000001f030000390000000000310435000001ef010000410000000000120435000000040120003900000020030000390000000000310435000001c301000041000001c30320009c00000000010240190000004001100210000001f0011001c700000709000104300000006003200039000000400030043f0000000002020433000600000005001d070705c70000040f0000000602000029000000000012041b0000000001000019000007080001042e000000400500043d0000000002000411000080010220008c000003cb0000c13d000002130250009c000002740000813d000500000003001d0000004002500039000000400020043f0000000702000039000000000202041a000000200350003900000080012002700000000000130435000001e7022001970000000000250435000000000224004b000600000004001d0000040d0000a13d000400000001001d0707062f0000040f0000000502000029000000000121013f000001e70110019800000000010000190000000101006039070706cb0000040f0000000601000029070706e30000040f00000004010000390000000101100367000000000101043b000500000001001d0000000401000029070706b90000040f0000000502000029000000000021041b00000004010000290707062f0000040f000500000001001d070705fd0000040f0000000502000029000001e70220019700000020031000390000000000230435000000060200002900000000002104350707064f0000040f00000064010000390000000101100367000000000101043b0000000602000039000000000012041b0000000001000019000007080001042e000001eb0240009c000003e90000413d000000000231004b000003e90000413d000001012110011a0000000b01200039000000000501041a000004050000013d0000004402500039000001ee03000041000000000032043500000024025000390000001f030000390000000000320435000001ef020000410000000000250435000000040250003900000020030000390000000000320435000001c302000041000001c30350009c000000000102001900000000010540190000004001100210000001f0011001c70000070900010430000500000007001d000600000004001d070706440000040f070706b90000040f000000050200002900000080022002100000000603000029000000000223019f000000000101041a000000000012041c0000000001000019000007080001042e000000400200043d000000200300003900000000033204360000000000130435000001ea0120009c000002740000213d0000004001200039000000400010043f000001c301000041000001c30430009c000000000301801900000040033002100000000002020433000001c30420009c00000000020180190000006002200210000000000232019f0000000003000414000001c30430009c0000000001034019000000c001100210000000000121019f000001ec011001c70000801002000039070707020000040f00000001022001900000035e0000613d000000000501043b000000400100043d0000000000510435000001c302000041000001c30310009c00000000010280190000004001100210000001e6011001c7000007080001042e000000400100043d000000440210003900000214030000410000000000320435000001ef02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f0011001c700000709000104300000000703000039000000000303041a000001e7033001970000000604000029000000000334004b0000043f0000813d000000400100043d000000a402100039000001f70300004100000000003204350000008402100039000001f80300004100000000003204350000006402100039000001f90300004100000000003204350000004402100039000001fa030000410000000000320435000000240210003900000061030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001fb011001c700000709000104300000000403000029000000000303004b000001660000c13d000000400100043d0000006402100039000001f50300004100000000003204350000004402100039000001f603000041000000000032043500000024021000390000003f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000504000029000000000443004b000004600000613d000001e70230009c000004890000c13d000004900000013d0000000504000029000000000443004b000004890000c13d000000000102004b000004960000c13d00000006010000290000000202000029000000000112004b000004d40000c13d0000000501000029000000010110008a000001e70210009c000004900000213d000001e701100197000001012110011a0000000b01200039000000000101041a0000000302000029000000000112004b000005710000c13d0000000401000029000000000101004b0000056b0000613d000000400100043d00000064021000390000020903000041000000000032043500000044021000390000020a03000041000000000032043500000024021000390000003c030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c7000007090001043000000001023000390000000504000029000000000242004b000004c30000c13d000000010230008a000001e70420009c000004e90000a13d0000020b0100004100000000001004350000001101000039000000040010043f0000020c010000410000070900010430000000400100043d000000640210003900000203030000410000000000320435000000440210003900000204030000410000000000320435000000240210003900000035030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000501000029000000000101004b0000052c0000c13d000000400100043d00000064021000390000020f03000041000000000032043500000044021000390000021003000041000000000032043500000024021000390000002c030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000000400200043d000600000002001d000001ef01000041000000000012043500000004012000390707063a0000040f00000006040000290000000001410049000001c302000041000001c30310009c0000000001028019000001c30340009c000000000204401900000040022002100000006001100210000000000121019f0000070900010430000000400100043d00000064021000390000020503000041000000000032043500000044021000390000020603000041000000000032043500000024021000390000002f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000001e702200197000001014220011a0000000b02400039000000000402041a0000000a02000039000000000502041a000000400200043d0000008006200039000000000056043500000060052000390000000000450435000000400420003900000002050000290000000000540435000000200420003900000000003404350000000000120435000001fc0120009c000002740000213d000000a001200039000000400010043f000001c301000041000001c30340009c0000000003010019000000000304401900000040033002100000000002020433000001c30420009c00000000020180190000006002200210000000000232019f0000000003000414000001c30430009c0000000001034019000000c001100210000000000121019f000001ec011001c70000801002000039070707020000040f000000010220019000000003020000290000035e0000613d000000000101043b000000000112004b000005860000c13d000000400100043d00000006020000290000000203000029000000000232004b000005b00000a13d000001ea0210009c000002740000213d0000004002100039000000400020043f000000200210003900000005030000290000000000320435000000060200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a000001e70210009c000004900000213d000005640000013d000000400100043d000000040200003900000000022104360000000503000029000001e703300041000200000003001d000000e0033002100000000000320435000001ea0310009c000002740000213d0000004003100039000000400030043f000001c303000041000001c30420009c000000000203801900000040022002100000000001010433000001c30410009c00000000010380190000006001100210000000000121019f0000000002000414000001c30420009c0000000002038019000000c002200210000000000112019f000001ec011001c70000801002000039070707020000040f000000010220019000000003020000290000035e0000613d000000000101043b000000000121004b0000059b0000c13d0000000201000029000001e701100197000001012110011a0000000b012000390000000302000029000000000021041b000000400100043d000001ea0210009c000002740000213d0000004002100039000000400020043f000000200210003900000005030000290000000000320435000000060200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a000001e701100197000001012110011a0000000b012000390000000302000029000000000021041b0000000a01000039000000000001041b000000050100002900000004020000290000000603000029070706570000040f0000000001000019000007080001042e000000400100043d000000640210003900000207030000410000000000320435000000440210003900000208030000410000000000320435000000240210003900000033030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000000400100043d0000006402100039000001fd0300004100000000003204350000004402100039000001fe030000410000000000320435000000240210003900000026030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000000400100043d00000064021000390000020d03000041000000000032043500000044021000390000020e030000410000000000320435000000240210003900000027030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000008402100039000001ff03000041000000000032043500000064021000390000020003000041000000000032043500000044021000390000020103000041000000000032043500000024021000390000005d030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c0000000001028019000000400110021000000202011001c70000070900010430000001c303000041000001c30410009c00000000010380190000004001100210000001c30420009c00000000020380190000006002200210000000000112019f0000000002000414000001c30420009c0000000002038019000000c002200210000000000112019f000001ec011001c70000801002000039070707020000040f0000000102200190000005db0000613d000000000101043b000000000001042d00000000010000190000070900010430000000000101004b000005e00000613d000000000001042d000000400100043d0000004402100039000001ee03000041000000000032043500000024021000390000001f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f0011001c70000070900010430000002130210009c000005f70000813d0000004001100039000000400010043f000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000000400100043d000002130210009c000006030000813d0000004002100039000000400020043f000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000000400300043d000002130130009c000006160000813d0000004001300039000000400010043f0000000701000039000000000201041a000000200430003900000080012002700000000000140435000001e7022001970000000000230435000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000000400300043d000002130130009c000006290000813d0000004001300039000000400010043f0000000901000039000000000201041a000000200430003900000080012002700000000000140435000001e7022001970000000000230435000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000001e701100197000001e70210009c000006340000613d0000000101100039000000000001042d0000020b0100004100000000001004350000001101000039000000040010043f0000020c01000041000007090001043000000040021000390000021503000041000000000032043500000020021000390000001b030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000001e701100197000000010110008a000001eb0210009c000006490000813d000000000001042d0000020b0100004100000000001004350000001101000039000000040010043f0000020c0100004100000709000104300000000021010434000001e70110019700000000020204330000008002200210000000000112019f0000000702000039000000000012041b000000000001042d0000010d04000039000000000504041a000001eb0550009c0000066f0000813d000000400500043d000002130650009c000006980000813d0000004006500039000000400060043f0000010c08000039000000000708041a000001e706700197000000000665043600000080077002700000000000760435000000000808041a000001e70880009c0000066c0000213d0000000008050433000001e708800198000006720000613d000001e7022001980000067e0000c13d000006970000013d0000000901000039000000000101041a000006950000013d0000000707000039000000000707041a00000080077002700000000000760435000000000804041a0000021608800197000000000778019f000000000074041b000001e702200198000006a40000613d0000000007060433000000010220008a000001e7077001970000000002270019000001eb0720009c0000069e0000813d0000000000260435000001e7033001970000000000350435000001e7021001970000000007060433000001e708700197000000000828004b000006920000413d0000008001100210000000000304041a000001e703300197000000000113019f000000000014041b000000000026043500000000030504330000000007020019000001e7013001970000008002700210000000000112019f0000010c02000039000000000012041b000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c0100004100000709000104300000020b0100004100000000001004350000001101000039000000040010043f0000020c010000410000070900010430000000400100043d000000640210003900000217030000410000000000320435000000440210003900000218030000410000000000320435000000240210003900000028030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000001e70110019700000000001004350000000801000039000000200010043f000001c3010000410000000002000414000001c30320009c0000000001024019000000c001100210000001ed011001c70000801002000039070707020000040f0000000102200190000006c90000613d000000000101043b000000000001042d00000000010000190000070900010430000000000101004b000006ce0000613d000000000001042d000000400100043d00000064021000390000021903000041000000000032043500000044021000390000021a030000410000000000320435000000240210003900000028030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000001e7011001970000000902000039000000000202041a000001e702200197000000000121004b000006ea0000a13d000000000001042d000000400100043d00000084021000390000021b03000041000000000032043500000064021000390000021c03000041000000000032043500000044021000390000021d030000410000000000320435000000240210003900000053030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c0000000001028019000000400110021000000202011001c7000007090001043000000705002104230000000102000039000000000001042d0000000002000019000000000001042d0000070700000432000007080001042e00000709000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e1bc9bf0400000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000085df51fc00000000000000000000000000000000000000000000000000000000a851ae7700000000000000000000000000000000000000000000000000000000d4a4ca0c00000000000000000000000000000000000000000000000000000000d4a4ca0d00000000000000000000000000000000000000000000000000000000ddeaa8e600000000000000000000000000000000000000000000000000000000fe173b9700000000000000000000000000000000000000000000000000000000a851ae7800000000000000000000000000000000000000000000000000000000bf1fe42000000000000000000000000000000000000000000000000000000000d0f2c663000000000000000000000000000000000000000000000000000000009a8a0591000000000000000000000000000000000000000000000000000000009a8a059200000000000000000000000000000000000000000000000000000000a0803ef700000000000000000000000000000000000000000000000000000000a6ae0aac0000000000000000000000000000000000000000000000000000000085df51fd000000000000000000000000000000000000000000000000000000008e8acf8700000000000000000000000000000000000000000000000000000000938b5f320000000000000000000000000000000000000000000000000000000042cbb15b000000000000000000000000000000000000000000000000000000007877a796000000000000000000000000000000000000000000000000000000007877a79700000000000000000000000000000000000000000000000000000000796b89b90000000000000000000000000000000000000000000000000000000080b412460000000000000000000000000000000000000000000000000000000042cbb15c00000000000000000000000000000000000000000000000000000000582776d4000000000000000000000000000000000000000000000000000000006ef25c3a0000000000000000000000000000000000000000000000000000000006e7517a0000000000000000000000000000000000000000000000000000000006e7517b0000000000000000000000000000000000000000000000000000000019cae4620000000000000000000000000000000000000000000000000000000029f172ad0000000000000000000000000000000000000000000000000000000002fa57790000000000000000000000000000000000000000000000000000000006bed0368000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000040000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf00000000000000000000000000000001000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000004000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000002067726561746572207468616e203000000000000000000000000000000000005468652063757272656e74206261746368206e756d626572206d7573742062650000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f656174656420617420746865207374617274206f6620746865206261746368005468657265206d7573742062652061207669727475616c20626c6f636b206372680000000000000000000000000000000000000000000000000000000000000068652074696d657374616d70206f66207468652063757272656e74206261746373742062652067726561746572207468616e206f7220657175616c20746f20745468652074696d657374616d70206f6620746865204c3220626c6f636b206d7500000000000000000000000000000000000000c4000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f6f727265637400000000000000000000000000000000000000000000000000005468652063757272656e74204c3220626c6f636b206861736820697320696e6374616d70206f66207468652070726576696f7573204c3220626c6f636b0000006b206d7573742062652067726561746572207468616e207468652074696d65735468652074696d657374616d70206f6620746865206e6577204c3220626c6f6300000000000000000000000000000000000000a40000000000000000000000006f6d207468652070726576696f7573206261746368000000000000000000000043616e206e6f74207265757365204c3220626c6f636b206e756d626572206672636b206d7573742062652073616d6500000000000000000000000000000000005468652074696d657374616d70206f66207468652073616d65204c3220626c6f20626c6f636b206d7573742062652073616d65000000000000000000000000005468652070726576696f75732068617368206f66207468652073616d65204c3220746865206d6964646c65206f6620746865206d696e69626c6f636b0000000043616e206e6f7420637265617465207669727475616c20626c6f636b7320696e4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000636f7272656374000000000000000000000000000000000000000000000000005468652070726576696f7573204c3220626c6f636b206861736820697320696e6420746f206265207a65726f00000000000000000000000000000000000000004c3220626c6f636b206e756d626572206973206e657665722065787065637465740000000000000000000000000000000000000000000000000000000000000055706772616465207472616e73616374696f6e206d7573742062652066697273000000000000000000000000000000000000000000000000ffffffffffffffc054696d657374616d70732073686f756c6420626520696e6372656d656e74616c496e76616c6964206e6577204c3220626c6f636b206e756d6265720000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000616c20626c6f636b00000000000000000000000000000000000000000000000043616e277420696e697469616c697a652074686520666972737420766972747520636f72726563740000000000000000000000000000000000000000000000005468652070726f766964656420626c6f636b206e756d626572206973206e6f74207468652070726576696f757320626c6f636b0000000000000000000000000062652067726561746572207468616e207468652074696d657374616d70206f665468652074696d657374616d70206f6620746865206261746368206d7573742070739a56239554cdc7824b3248ec7615747537dbc32ae5e7579ae4c6c9e38a83", - "deployedBytecode": "0x0002000000000002000600000000000200010000000103550000006001100270000001c30010019d0000008001000039000000400010043f0000000102200190000000370000c13d0000000002000031000000040220008c0000035e0000413d0000000102000367000000000202043b000000e002200270000001c70320009c0000004a0000a13d000001c80120009c0000006f0000213d000001d00120009c000000ac0000213d000001d40120009c000001900000613d000001d50120009c000001940000613d000001d60120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000101000039000000000101041a000001e901100197000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000001c3010000410000000302000039000000000012041b0000000401000039000000000201041a000001c40220019700008001022001bf000000000021041b000001c5010000410000000502000039000000000012041b000000200100003900000100001004430000012000000443000001c601000041000007080001042e000001d70320009c0000007b0000a13d000001d80120009c000000ce0000213d000001dc0120009c000001b20000613d000001dd0120009c000001ce0000613d000001de0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000601000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e000001c90120009c000001110000213d000001cd0120009c000002110000613d000001ce0120009c000002350000613d000001cf0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000003060000013d000001df0320009c000001320000a13d000001e00120009c000002520000613d000001e10120009c0000027a0000613d000001e20120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000600310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000001000411000080010110008c00000000010000190000000101006039070705dd0000040f000000400100043d070705f20000040f00000001010003670000002402100370000000000202043b00000080022002100000000401100370000000000101043b000001e701100197000000000121019f0000000702000039000000000012041b00000044010000390000000101100367000000000101043b0000000602000039000000000012041b0000000001000019000007080001042e000001d10120009c000002950000613d000001d20120009c000002af0000613d000001d30120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000401000039000000000101041a000001e901100197000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e000001d90120009c000002cc0000613d000001da0120009c000002e70000613d000001db0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000004010000390000000101100367000000000101043b000000400200043d000001ea0320009c000002740000213d0000010c03000039000000000503041a0000004003200039000000400030043f0000010d03000039000000000403041a000001e7034001970000000006320436000000800340027000000000003604350000008006500270000000000516004b0000000005000019000004050000a13d0000000005160049000001010550008c0000000005000019000004050000813d0000000002020433000001e702200197000000000221004b000003c30000813d00000000001004350000000801000039000000200010043f000001c3010000410000000002000414000001c30320009c0000000001024019000000c001100210000001ed011001c70000801002000039070707020000040f00000001022001900000035e0000613d000000000101043b000000000501041a000004050000013d000001ca0120009c000003030000613d000001cb0120009c000003210000613d000001cc0120009c0000035e0000c13d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000201000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e000001e30320009c000003440000613d000001e40220009c0000035e0000c13d0000000002000416000000000202004b0000035e0000c13d000000040200008a0000000002200031000001e503000041000000a00420008c00000000040000190000000004034019000001e502200197000000000502004b000000000300a019000001e50220009c00000000020400190000000002036019000000000202004b0000035e0000c13d00000001030003670000000402300370000000000502043b000001e70250009c0000035e0000213d0000002402300370000000000602043b000001e70260009c0000035e0000213d0000004402300370000000000702043b0000006402300370000000000202043b000000000402004b0000000004000019000000010400c039000000000442004b0000035e0000c13d0000008403300370000000000403043b000001e70340009c0000035e0000213d0000000003000411000080010330008c000003600000c13d000300000007001d000400000004001d000600000006001d000500000005001d000000000302004b0000041e0000c13d000000400400043d000001ea0340009c000002740000213d0000004003400039000000400030043f0000000903000039000100000003001d000000000503041a000000200640003900000080035002700000000000360435000001e706500197000200000006001d0000000000640435000001e70450009c000004570000213d0000000204000029000000000404004b0000045d0000c13d000000000102004b000004ab0000c13d000000400100043d000000640210003900000211030000410000000000320435000000440210003900000212030000410000000000320435000000240210003900000021030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000001000416000000000101004b0000035e0000c13d000003240000013d0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0707061c0000040f000001e702200197000000400300043d00000020043000390000000000240435000001e7011001970000000000130435000001c301000041000001c30230009c00000000010340190000004001100210000001e8011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000010c01000039000000000101041a0000008001100270000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d000000400200043d0000000001000411000080010110008c000003720000c13d000001ea0120009c000002740000213d0000004001200039000000400010043f0000000701000039000000000301041a000000200420003900000080013002700000000000140435000001e7073001970000000000720435000000400200043d000001ea0420009c000002740000213d0000004004200039000000400040043f0000000904000039000000000404041a000000200520003900000080064002700000000000650435000001e7044001970000000000420435000001e70230009c000003dd0000213d000000400100043d0000006402100039000001f10300004100000000003204350000004402100039000001f203000041000000000032043500000024021000390000002f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000004010000390000000101100367000000000201043b000001e90120009c0000035e0000213d0000000001000411000080010110008c00000000010000190000000101006039000600000002001d070705dd0000040f0000000101000039000000000201041a000001c4022001970000000603000029000000000232019f000000000021041b0000000001000019000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000001000411000080010110008c00000000010000190000000101006039070705dd0000040f00000004010000390000000101100367000000000101043b0000000202000039000000000012041b0000000001000019000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000001000411000080010110008c000003600000c13d0000000a05000039000000000305041a000000400200043d0000002001200039000000000031043500000004030000390000000103300367000000000303043b0000004004200039000000000034043500000040030000390000000000320435000001f40320009c000003830000a13d0000020b0100004100000000001004350000004101000039000000040010043f0000020c0100004100000709000104300000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000501000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d000000400100043d000000000200041a0000000000210435000001c302000041000001c30310009c00000000010280190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d070706090000040f000001e7022001970000008001100210000000000121019f000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000000301000039000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d0000010c01000039000000000101041a000001e701100197000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000000301004b00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d070706090000040f000001e702200197000000400300043d00000020043000390000000000240435000001e7011001970000000000130435000001c301000041000001c30230009c00000000010340190000004001100210000001e8011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000200310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000004010000390000000101100367000000000101043b00000000001004350000000801000039000000200010043f00000040020000390000000001000019070705c70000040f000000000101041a000000400200043d0000000000120435000001c301000041000001c30320009c00000000010240190000004001100210000001e6011001c7000007080001042e0000000001000416000000000101004b0000035e0000c13d000000040100008a0000000001100031000001e502000041000000800310008c00000000030000190000000003024019000001e501100197000000000401004b000000000200a019000001e50110009c00000000010300190000000001026019000000000101004b0000035e0000c13d00000001010003670000002402100370000000000402043b000001e70240009c0000035e0000213d0000004401100370000000000301043b000001e70130009c0000038c0000a13d00000000010000190000070900010430000000400100043d0000004402100039000001ee03000041000000000032043500000024021000390000001f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f0011001c700000709000104300000004401200039000001ee03000041000000000031043500000024012000390000001f030000390000000000310435000001ef010000410000000000120435000000040120003900000020030000390000000000310435000001c301000041000001c30320009c00000000010240190000004001100210000001f0011001c700000709000104300000006003200039000000400030043f0000000002020433000600000005001d070705c70000040f0000000602000029000000000012041b0000000001000019000007080001042e000000400500043d0000000002000411000080010220008c000003cb0000c13d000002130250009c000002740000813d000500000003001d0000004002500039000000400020043f0000000702000039000000000202041a000000200350003900000080012002700000000000130435000001e7022001970000000000250435000000000224004b000600000004001d0000040d0000a13d000400000001001d0707062f0000040f0000000502000029000000000121013f000001e70110019800000000010000190000000101006039070706cb0000040f0000000601000029070706e30000040f00000004010000390000000101100367000000000101043b000500000001001d0000000401000029070706b90000040f0000000502000029000000000021041b00000004010000290707062f0000040f000500000001001d070705fd0000040f0000000502000029000001e70220019700000020031000390000000000230435000000060200002900000000002104350707064f0000040f00000064010000390000000101100367000000000101043b0000000602000039000000000012041b0000000001000019000007080001042e000001eb0240009c000003e90000413d000000000231004b000003e90000413d000001012110011a0000000b01200039000000000501041a000004050000013d0000004402500039000001ee03000041000000000032043500000024025000390000001f030000390000000000320435000001ef020000410000000000250435000000040250003900000020030000390000000000320435000001c302000041000001c30350009c000000000102001900000000010540190000004001100210000001f0011001c70000070900010430000500000007001d000600000004001d070706440000040f070706b90000040f000000050200002900000080022002100000000603000029000000000223019f000000000101041a000000000012041c0000000001000019000007080001042e000000400200043d000000200300003900000000033204360000000000130435000001ea0120009c000002740000213d0000004001200039000000400010043f000001c301000041000001c30430009c000000000301801900000040033002100000000002020433000001c30420009c00000000020180190000006002200210000000000232019f0000000003000414000001c30430009c0000000001034019000000c001100210000000000121019f000001ec011001c70000801002000039070707020000040f00000001022001900000035e0000613d000000000501043b000000400100043d0000000000510435000001c302000041000001c30310009c00000000010280190000004001100210000001e6011001c7000007080001042e000000400100043d000000440210003900000214030000410000000000320435000001ef02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f0011001c700000709000104300000000703000039000000000303041a000001e7033001970000000604000029000000000334004b0000043f0000813d000000400100043d000000a402100039000001f70300004100000000003204350000008402100039000001f80300004100000000003204350000006402100039000001f90300004100000000003204350000004402100039000001fa030000410000000000320435000000240210003900000061030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001fb011001c700000709000104300000000403000029000000000303004b000001660000c13d000000400100043d0000006402100039000001f50300004100000000003204350000004402100039000001f603000041000000000032043500000024021000390000003f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000504000029000000000443004b000004600000613d000001e70230009c000004890000c13d000004900000013d0000000504000029000000000443004b000004890000c13d000000000102004b000004960000c13d00000006010000290000000202000029000000000112004b000004d40000c13d0000000501000029000000010110008a000001e70210009c000004900000213d000001e701100197000001012110011a0000000b01200039000000000101041a0000000302000029000000000112004b000005710000c13d0000000401000029000000000101004b0000056b0000613d000000400100043d00000064021000390000020903000041000000000032043500000044021000390000020a03000041000000000032043500000024021000390000003c030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c7000007090001043000000001023000390000000504000029000000000242004b000004c30000c13d000000010230008a000001e70420009c000004e90000a13d0000020b0100004100000000001004350000001101000039000000040010043f0000020c010000410000070900010430000000400100043d000000640210003900000203030000410000000000320435000000440210003900000204030000410000000000320435000000240210003900000035030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000000501000029000000000101004b0000052c0000c13d000000400100043d00000064021000390000020f03000041000000000032043500000044021000390000021003000041000000000032043500000024021000390000002c030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000000400200043d000600000002001d000001ef01000041000000000012043500000004012000390707063a0000040f00000006040000290000000001410049000001c302000041000001c30310009c0000000001028019000001c30340009c000000000204401900000040022002100000006001100210000000000121019f0000070900010430000000400100043d00000064021000390000020503000041000000000032043500000044021000390000020603000041000000000032043500000024021000390000002f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000001e702200197000001014220011a0000000b02400039000000000402041a0000000a02000039000000000502041a000000400200043d0000008006200039000000000056043500000060052000390000000000450435000000400420003900000002050000290000000000540435000000200420003900000000003404350000000000120435000001fc0120009c000002740000213d000000a001200039000000400010043f000001c301000041000001c30340009c0000000003010019000000000304401900000040033002100000000002020433000001c30420009c00000000020180190000006002200210000000000232019f0000000003000414000001c30430009c0000000001034019000000c001100210000000000121019f000001ec011001c70000801002000039070707020000040f000000010220019000000003020000290000035e0000613d000000000101043b000000000112004b000005860000c13d000000400100043d00000006020000290000000203000029000000000232004b000005b00000a13d000001ea0210009c000002740000213d0000004002100039000000400020043f000000200210003900000005030000290000000000320435000000060200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a000001e70210009c000004900000213d000005640000013d000000400100043d000000040200003900000000022104360000000503000029000001e703300041000200000003001d000000e0033002100000000000320435000001ea0310009c000002740000213d0000004003100039000000400030043f000001c303000041000001c30420009c000000000203801900000040022002100000000001010433000001c30410009c00000000010380190000006001100210000000000121019f0000000002000414000001c30420009c0000000002038019000000c002200210000000000112019f000001ec011001c70000801002000039070707020000040f000000010220019000000003020000290000035e0000613d000000000101043b000000000121004b0000059b0000c13d0000000201000029000001e701100197000001012110011a0000000b012000390000000302000029000000000021041b000000400100043d000001ea0210009c000002740000213d0000004002100039000000400020043f000000200210003900000005030000290000000000320435000000060200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a000001e701100197000001012110011a0000000b012000390000000302000029000000000021041b0000000a01000039000000000001041b000000050100002900000004020000290000000603000029070706570000040f0000000001000019000007080001042e000000400100043d000000640210003900000207030000410000000000320435000000440210003900000208030000410000000000320435000000240210003900000033030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000000400100043d0000006402100039000001fd0300004100000000003204350000004402100039000001fe030000410000000000320435000000240210003900000026030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000000400100043d00000064021000390000020d03000041000000000032043500000044021000390000020e030000410000000000320435000000240210003900000027030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c700000709000104300000008402100039000001ff03000041000000000032043500000064021000390000020003000041000000000032043500000044021000390000020103000041000000000032043500000024021000390000005d030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c0000000001028019000000400110021000000202011001c70000070900010430000001c303000041000001c30410009c00000000010380190000004001100210000001c30420009c00000000020380190000006002200210000000000112019f0000000002000414000001c30420009c0000000002038019000000c002200210000000000112019f000001ec011001c70000801002000039070707020000040f0000000102200190000005db0000613d000000000101043b000000000001042d00000000010000190000070900010430000000000101004b000005e00000613d000000000001042d000000400100043d0000004402100039000001ee03000041000000000032043500000024021000390000001f030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f0011001c70000070900010430000002130210009c000005f70000813d0000004001100039000000400010043f000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000000400100043d000002130210009c000006030000813d0000004002100039000000400020043f000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000000400300043d000002130130009c000006160000813d0000004001300039000000400010043f0000000701000039000000000201041a000000200430003900000080012002700000000000140435000001e7022001970000000000230435000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000000400300043d000002130130009c000006290000813d0000004001300039000000400010043f0000000901000039000000000201041a000000200430003900000080012002700000000000140435000001e7022001970000000000230435000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c010000410000070900010430000001e701100197000001e70210009c000006340000613d0000000101100039000000000001042d0000020b0100004100000000001004350000001101000039000000040010043f0000020c01000041000007090001043000000040021000390000021503000041000000000032043500000020021000390000001b030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d000001e701100197000000010110008a000001eb0210009c000006490000813d000000000001042d0000020b0100004100000000001004350000001101000039000000040010043f0000020c0100004100000709000104300000000021010434000001e70110019700000000020204330000008002200210000000000112019f0000000702000039000000000012041b000000000001042d0000010d04000039000000000504041a000001eb0550009c0000066f0000813d000000400500043d000002130650009c000006980000813d0000004006500039000000400060043f0000010c08000039000000000708041a000001e706700197000000000665043600000080077002700000000000760435000000000808041a000001e70880009c0000066c0000213d0000000008050433000001e708800198000006720000613d000001e7022001980000067e0000c13d000006970000013d0000000901000039000000000101041a000006950000013d0000000707000039000000000707041a00000080077002700000000000760435000000000804041a0000021608800197000000000778019f000000000074041b000001e702200198000006a40000613d0000000007060433000000010220008a000001e7077001970000000002270019000001eb0720009c0000069e0000813d0000000000260435000001e7033001970000000000350435000001e7021001970000000007060433000001e708700197000000000828004b000006920000413d0000008001100210000000000304041a000001e703300197000000000113019f000000000014041b000000000026043500000000030504330000000007020019000001e7013001970000008002700210000000000112019f0000010c02000039000000000012041b000000000001042d0000020b0100004100000000001004350000004101000039000000040010043f0000020c0100004100000709000104300000020b0100004100000000001004350000001101000039000000040010043f0000020c010000410000070900010430000000400100043d000000640210003900000217030000410000000000320435000000440210003900000218030000410000000000320435000000240210003900000028030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000001e70110019700000000001004350000000801000039000000200010043f000001c3010000410000000002000414000001c30320009c0000000001024019000000c001100210000001ed011001c70000801002000039070707020000040f0000000102200190000006c90000613d000000000101043b000000000001042d00000000010000190000070900010430000000000101004b000006ce0000613d000000000001042d000000400100043d00000064021000390000021903000041000000000032043500000044021000390000021a030000410000000000320435000000240210003900000028030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c00000000010280190000004001100210000001f3011001c70000070900010430000001e7011001970000000902000039000000000202041a000001e702200197000000000121004b000006ea0000a13d000000000001042d000000400100043d00000084021000390000021b03000041000000000032043500000064021000390000021c03000041000000000032043500000044021000390000021d030000410000000000320435000000240210003900000053030000390000000000320435000001ef020000410000000000210435000000040210003900000020030000390000000000320435000001c302000041000001c30310009c0000000001028019000000400110021000000202011001c7000007090001043000000705002104230000000102000039000000000001042d0000000002000019000000000001042d0000070700000432000007080001042e00000709000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e1bc9bf0400000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000085df51fc00000000000000000000000000000000000000000000000000000000a851ae7700000000000000000000000000000000000000000000000000000000d4a4ca0c00000000000000000000000000000000000000000000000000000000d4a4ca0d00000000000000000000000000000000000000000000000000000000ddeaa8e600000000000000000000000000000000000000000000000000000000fe173b9700000000000000000000000000000000000000000000000000000000a851ae7800000000000000000000000000000000000000000000000000000000bf1fe42000000000000000000000000000000000000000000000000000000000d0f2c663000000000000000000000000000000000000000000000000000000009a8a0591000000000000000000000000000000000000000000000000000000009a8a059200000000000000000000000000000000000000000000000000000000a0803ef700000000000000000000000000000000000000000000000000000000a6ae0aac0000000000000000000000000000000000000000000000000000000085df51fd000000000000000000000000000000000000000000000000000000008e8acf8700000000000000000000000000000000000000000000000000000000938b5f320000000000000000000000000000000000000000000000000000000042cbb15b000000000000000000000000000000000000000000000000000000007877a796000000000000000000000000000000000000000000000000000000007877a79700000000000000000000000000000000000000000000000000000000796b89b90000000000000000000000000000000000000000000000000000000080b412460000000000000000000000000000000000000000000000000000000042cbb15c00000000000000000000000000000000000000000000000000000000582776d4000000000000000000000000000000000000000000000000000000006ef25c3a0000000000000000000000000000000000000000000000000000000006e7517a0000000000000000000000000000000000000000000000000000000006e7517b0000000000000000000000000000000000000000000000000000000019cae4620000000000000000000000000000000000000000000000000000000029f172ad0000000000000000000000000000000000000000000000000000000002fa57790000000000000000000000000000000000000000000000000000000006bed0368000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000040000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf00000000000000000000000000000001000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000004000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000002067726561746572207468616e203000000000000000000000000000000000005468652063757272656e74206261746368206e756d626572206d7573742062650000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f656174656420617420746865207374617274206f6620746865206261746368005468657265206d7573742062652061207669727475616c20626c6f636b206372680000000000000000000000000000000000000000000000000000000000000068652074696d657374616d70206f66207468652063757272656e74206261746373742062652067726561746572207468616e206f7220657175616c20746f20745468652074696d657374616d70206f6620746865204c3220626c6f636b206d7500000000000000000000000000000000000000c4000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f6f727265637400000000000000000000000000000000000000000000000000005468652063757272656e74204c3220626c6f636b206861736820697320696e6374616d70206f66207468652070726576696f7573204c3220626c6f636b0000006b206d7573742062652067726561746572207468616e207468652074696d65735468652074696d657374616d70206f6620746865206e6577204c3220626c6f6300000000000000000000000000000000000000a40000000000000000000000006f6d207468652070726576696f7573206261746368000000000000000000000043616e206e6f74207265757365204c3220626c6f636b206e756d626572206672636b206d7573742062652073616d6500000000000000000000000000000000005468652074696d657374616d70206f66207468652073616d65204c3220626c6f20626c6f636b206d7573742062652073616d65000000000000000000000000005468652070726576696f75732068617368206f66207468652073616d65204c3220746865206d6964646c65206f6620746865206d696e69626c6f636b0000000043616e206e6f7420637265617465207669727475616c20626c6f636b7320696e4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000636f7272656374000000000000000000000000000000000000000000000000005468652070726576696f7573204c3220626c6f636b206861736820697320696e6420746f206265207a65726f00000000000000000000000000000000000000004c3220626c6f636b206e756d626572206973206e657665722065787065637465740000000000000000000000000000000000000000000000000000000000000055706772616465207472616e73616374696f6e206d7573742062652066697273000000000000000000000000000000000000000000000000ffffffffffffffc054696d657374616d70732073686f756c6420626520696e6372656d656e74616c496e76616c6964206e6577204c3220626c6f636b206e756d6265720000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000616c20626c6f636b00000000000000000000000000000000000000000000000043616e277420696e697469616c697a652074686520666972737420766972747520636f72726563740000000000000000000000000000000000000000000000005468652070726f766964656420626c6f636b206e756d626572206973206e6f74207468652070726576696f757320626c6f636b0000000000000000000000000062652067726561746572207468616e207468652074696d657374616d70206f665468652074696d657374616d70206f6620746865206261746368206d7573742070739a56239554cdc7824b3248ec7615747537dbc32ae5e7579ae4c6c9e38a83", + "bytecode": "0x0002000000000002000600000000000200010000000103550000006001100270000001d80010019d0000008001000039000000400010043f0000000102200190000000370000c13d0000000002000031000000040220008c000003ea0000413d0000000102000367000000000202043b000000e002200270000001dc0320009c0000004a0000213d000001ee0320009c000000580000a13d000001ef0120009c000000b10000a13d000001f00120009c0000013d0000213d000001f30120009c0000019d0000613d000001f40120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000010c01000039000000000101041a0000020101100197000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000001d8010000410000000302000039000000000012041b0000000401000039000000000201041a000001d90220019700008001022001bf000000000021041b000001da010000410000000502000039000000000012041b000000200100003900000100001004430000012000000443000001db010000410000075b0001042e000001dd0120009c0000008b0000a13d000001de0120009c000000d20000a13d000001df0120009c0000017e0000213d000001e20120009c000001b80000613d000001e30120009c000003ea0000c13d0000000001000416000000000101004b000001bb0000613d000003ea0000013d000001f80320009c000000f50000213d000001fc0320009c000001d60000613d000001fd0320009c0000022a0000613d000001fe0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c000003fe0000c13d0000000a05000039000000000305041a000000400200043d0000002001200039000000000031043500000004030000390000000103300367000000000303043b00000040042000390000000000340435000000400300003900000000003204350000020f0320009c0000044d0000213d0000006003200039000000400030043f0000000002020433000600000005001d075a06250000040f0000000602000029000000000012041b00000000010000190000075b0001042e000001e70120009c0000011a0000213d000001eb0120009c000002840000613d000001ec0120009c000002880000613d000001ed0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d075a067a0000040f0000020102200197000000400300043d0000002004300039000000000024043500000201011001970000000000130435000001d801000041000001d80230009c0000000001034019000000400110021000000202011001c70000075b0001042e000001f50120009c000002a40000613d000001f60120009c000002c00000613d000001f70120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000601000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e000001e40120009c000002dc0000613d000001e50120009c000002f80000613d000001e60120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f00000004010000390000000101100367000000000101043b0000000202000039000000000012041b00000000010000190000075b0001042e000001f90120009c0000031c0000613d000001fa0120009c000003370000613d000001fb0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c000003fe0000c13d0000010e01000039000000000201041a0000ffff0320018f0000ffff0430008c000004210000c13d000002260100004100000000001004350000001101000039000000040010043f00000227010000410000075c00010430000001e80120009c000003600000613d000001e90120009c0000037c0000613d000001ea0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d075a06670000040f00000201022001970000008001100210000000000121019f000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e000001f10120009c000003960000613d000001f20120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d00000004010000390000000101100367000000000101043b000000400200043d000002040320009c0000044d0000213d0000010c03000039000000000503041a0000004003200039000000400030043f0000010d03000039000000000403041a00000201034001970000000006320436000000800340027000000000003604350000008006500270000000000516004b00000000050000190000047a0000a13d0000000005160049000001010550008c00000000050000190000047a0000813d00000000020204330000020102200197000000000221004b000004270000813d00000000001004350000000801000039000000200010043f000001d8010000410000000002000414000001d80320009c0000000001024019000000c00110021000000207011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000101043b000000000501041a0000047a0000013d000001e00120009c000003d90000613d000001e10120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000201000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000301000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d075a06670000040f0000020102200197000000400300043d0000002004300039000000000024043500000201011001970000000000130435000001d801000041000001d80230009c0000000001034019000000400110021000000202011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000800310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d00000001010003670000000402100370000000000202043b000600000002001d0000002402100370000000000202043b0000000004020019000002010220009c000003ea0000213d0000004401100370000000000101043b000500000001001d000002010110009c000003ea0000213d000000400500043d0000000002000411000080010220008c0000042f0000c13d0000022e0250009c0000044d0000813d0000004002500039000000400020043f0000000702000039000000000202041a00000020035000390000008001200270000000000013043500000201022001970000000000250435000400000004001d000000000224004b000004530000a13d000300000001001d075a068d0000040f0000000502000029000000000121013f000002010110019800000000010000190000000101006039075a070c0000040f0000000401000029075a07360000040f0000000301000029075a07240000040f0000000602000029000000000021041b0000000301000029075a068d0000040f000500000001001d075a065b0000040f000000050200002900000201022001970000002003100039000000000023043500000004020000290000000000210435075a06a20000040f00000064010000390000000101100367000000000101043b0000000602000039000000000012041b00000004010000390000000602000029000000000021041c00000000010000190000075b0001042e0000000002000416000000000202004b000003ea0000c13d000000040200008a0000000002200031000001ff03000041000000a00420008c00000000040000190000000004034019000001ff02200197000000000502004b000000000300a019000001ff0220009c00000000020400190000000002036019000000000202004b000003ea0000c13d00000001030003670000000402300370000000000202043b000600000002001d000002010220009c000003ea0000213d0000002402300370000000000202043b000500000002001d000002010220009c000003ea0000213d0000004402300370000000000202043b000400000002001d0000006402300370000000000202043b000000000402004b0000000004000019000000010400c039000000000442004b000003ea0000c13d0000008403300370000000000303043b000300000003001d000002010330009c000003ea0000213d0000000003000411000080010330008c000003fe0000c13d000000000302004b000004820000c13d000000400400043d000002040340009c0000044d0000213d0000004003400039000000400030043f0000000903000039000100000003001d000000000503041a0000002006400039000000800350027000000000003604350000020106500197000200000006001d0000000000640435000002010450009c000004bb0000213d0000000204000029000000000404004b000004c10000c13d000000000102004b0000054c0000c13d000000400100043d00000064021000390000022c03000041000000000032043500000044021000390000022d03000041000000000032043500000024021000390000002103000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000001000416000000000101004b000003ea0000c13d000003dc0000013d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000010e01000039000000000101041a0000ffff0110018f000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f0000010e01000039000000000201041a0000020e02200197000000000021041b00000000010000190000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000010c01000039000000000101041a0000008001100270000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000401000039000000000101041a0000020301100197000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d00000004010000390000000101100367000000000101043b000600000001001d000002030110009c000003ea0000213d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f0000000101000039000000000201041a000001d9022001970000000603000029000000000232019f000000000021041b00000000010000190000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000501000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000600310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f000000400100043d075a06500000040f00000001010003670000002402100370000000000202043b00000080022002100000000401100370000000000101043b0000020101100197000000000121019f0000000702000039000000000012041b00000044010000390000000101100367000000000101043b0000000602000039000000000012041b00000000010000190000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000101000039000000000101041a0000020301100197000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d000000400100043d000000000200041a0000000000210435000001d802000041000001d80310009c0000000001028019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d000000400100043d0000000002000411000080010220008c000004100000c13d000002040210009c0000044d0000213d0000004002100039000000400020043f0000000702000039000000000202041a00000020031000390000008004200270000000000043043500000201032001970000000000310435000000400100043d000002040410009c0000044d0000213d0000004004100039000000400040043f0000000904000039000000000404041a00000020051000390000008006400270000000000065043500000201044001970000000000410435000002010120009c000004410000213d000000400100043d00000064021000390000020b03000041000000000032043500000044021000390000020c03000041000000000032043500000024021000390000002f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ec0000613d00000000010000190000075c0001043000000004010000390000000101100367000000000101043b00000000001004350000000801000039000000200010043f00000040020000390000000001000019075a06250000040f000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e000000400100043d00000044021000390000020803000041000000000032043500000024021000390000001f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c0001043000000044021000390000020803000041000000000032043500000024021000390000001f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c000104300000020e022001970000000103300039000000000223019f000000000021041b00000000010000190000075b0001042e000002050240009c000004470000413d000000000231004b000004470000413d000001012110011a0000000b01200039000000000501041a0000047a0000013d00000044025000390000020803000041000000000032043500000024025000390000001f03000039000000000032043500000209020000410000000000250435000000040250003900000020030000390000000000320435000001d802000041000001d80350009c0000000001020019000000000105401900000040011002100000020a011001c70000075c000104300000008001300210000000000114019f0000000302000039000000000012041c00000000010000190000075b0001042e000000400200043d000000200300003900000000033204360000000000130435000002040120009c000004640000a13d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400100043d00000044021000390000022f0300004100000000003204350000020902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c000104300000004001200039000000400010043f000001d801000041000001d80430009c000000000301801900000040033002100000000002020433000001d80420009c00000000020180190000006002200210000000000232019f0000000003000414000001d80430009c0000000001034019000000c001100210000000000121019f00000206011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000501043b000000400100043d0000000000510435000001d802000041000001d80310009c0000000001028019000000400110021000000200011001c70000075b0001042e0000000703000039000000000303041a00000201033001970000000504000029000000000334004b000004a30000813d000000400100043d000000a4021000390000021203000041000000000032043500000084021000390000021303000041000000000032043500000064021000390000021403000041000000000032043500000044021000390000021503000041000000000032043500000024021000390000006103000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c0000000001028019000000400110021000000216011001c70000075c000104300000000303000029000000000303004b0000025a0000c13d000000400100043d00000064021000390000021003000041000000000032043500000044021000390000021103000041000000000032043500000024021000390000003f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000604000029000000000443004b000004c40000613d000002010230009c000004ed0000c13d000001140000013d0000000604000029000000000443004b000004ed0000c13d000000000102004b000005370000c13d00000005010000290000000202000029000000000112004b000005750000c13d0000000601000029000000010110008a000002010210009c000001140000213d0000020101100197000001012110011a0000000b01200039000000000101041a0000000402000029000000000112004b000005cf0000c13d0000000301000029000000000101004b000005c90000613d000000400100043d00000064021000390000022403000041000000000032043500000044021000390000022503000041000000000032043500000024021000390000003c03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c0001043000000001023000390000000604000029000000000242004b000005640000c13d000000010230008a000002010420009c000001140000213d0000020102200197000001014220011a0000000b02400039000000000402041a0000000a02000039000000000502041a000000400200043d0000008006200039000000000056043500000060052000390000000000450435000000400420003900000002050000290000000000540435000000200420003900000000003404350000000000120435000002170120009c0000044d0000213d000000a001200039000000400010043f000001d801000041000001d80340009c0000000003010019000000000304401900000040033002100000000002020433000001d80420009c00000000020180190000006002200210000000000232019f0000000003000414000001d80430009c0000000001034019000000c001100210000000000121019f00000206011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000101043b0000000402000029000000000112004b000005e40000c13d000000400100043d00000005020000290000000203000029000000000232004b0000060e0000a13d000002040210009c0000044d0000213d0000004002100039000000400020043f000000200210003900000006030000290000000000320435000000050200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a000002010210009c000001140000213d000005c20000013d000000400100043d00000064021000390000021e03000041000000000032043500000044021000390000021f03000041000000000032043500000024021000390000003503000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000601000029000000000101004b0000058a0000c13d000000400100043d00000064021000390000022a03000041000000000032043500000044021000390000022b03000041000000000032043500000024021000390000002c03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400200043d000600000002001d000002090100004100000000001204350000000401200039075a06980000040f00000006040000290000000001410049000001d802000041000001d80310009c0000000001028019000001d80340009c000000000204401900000040022002100000006001100210000000000121019f0000075c00010430000000400100043d00000064021000390000022003000041000000000032043500000044021000390000022103000041000000000032043500000024021000390000002f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400100043d0000000402000039000000000221043600000006030000290000020103300041000200000003001d000000e0033002100000000000320435000002040310009c0000044d0000213d0000004003100039000000400030043f000001d803000041000001d80420009c000000000203801900000040022002100000000001010433000001d80410009c00000000010380190000006001100210000000000121019f0000000002000414000001d80420009c0000000002038019000000c002200210000000000112019f00000206011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000101043b0000000402000029000000000121004b000005f90000c13d00000002010000290000020101100197000001012110011a0000000b012000390000000402000029000000000021041b000000400100043d000002040210009c0000044d0000213d0000004002100039000000400020043f000000200210003900000006030000290000000000320435000000050200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a0000020101100197000001012110011a0000000b012000390000000402000029000000000021041b0000000a01000039000000000001041b000000060100002900000003020000290000000503000029075a06aa0000040f00000000010000190000075b0001042e000000400100043d00000064021000390000022203000041000000000032043500000044021000390000022303000041000000000032043500000024021000390000003303000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400100043d00000064021000390000021803000041000000000032043500000044021000390000021903000041000000000032043500000024021000390000002603000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400100043d00000064021000390000022803000041000000000032043500000044021000390000022903000041000000000032043500000024021000390000002703000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c0001043000000084021000390000021a03000041000000000032043500000064021000390000021b03000041000000000032043500000044021000390000021c03000041000000000032043500000024021000390000005d03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000021d011001c70000075c00010430000001d803000041000001d80410009c00000000010380190000004001100210000001d80420009c00000000020380190000006002200210000000000112019f0000000002000414000001d80420009c0000000002038019000000c002200210000000000112019f00000206011001c70000801002000039075a07550000040f0000000102200190000006390000613d000000000101043b000000000001042d00000000010000190000075c00010430000000000101004b0000063e0000613d000000000001042d000000400100043d00000044021000390000020803000041000000000032043500000024021000390000001f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c000104300000022e0210009c000006550000813d0000004001100039000000400010043f000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400100043d0000022e0210009c000006610000813d0000004002100039000000400020043f000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400300043d0000022e0130009c000006740000813d0000004001300039000000400010043f0000000701000039000000000201041a00000020043000390000008001200270000000000014043500000201022001970000000000230435000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400300043d0000022e0130009c000006870000813d0000004001300039000000400010043f0000000901000039000000000201041a00000020043000390000008001200270000000000014043500000201022001970000000000230435000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c000104300000020101100197000002010210009c000006920000613d0000000101100039000000000001042d000002260100004100000000001004350000001101000039000000040010043f00000227010000410000075c0001043000000040021000390000023003000041000000000032043500000020021000390000001b030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0000000021010434000002010110019700000000020204330000008002200210000000000112019f0000000702000039000000000012041b000000000001042d0000010d04000039000000000504041a000002050550009c000006c20000813d000000400500043d0000022e0650009c000006eb0000813d0000004006500039000000400060043f0000010c08000039000000000708041a0000020106700197000000000665043600000080077002700000000000760435000000000808041a000002010880009c000006bf0000213d00000000080504330000020108800198000006c50000613d0000020102200198000006d10000c13d000006ea0000013d0000000901000039000000000101041a000006e80000013d0000000707000039000000000707041a00000080077002700000000000760435000000000804041a0000023108800197000000000778019f000000000074041b0000020102200198000006f70000613d0000000007060433000000010220008a00000201077001970000000002270019000002050720009c000006f10000813d000000000026043500000201033001970000000000350435000002010210019700000000070604330000020108700197000000000828004b000006e50000413d0000008001100210000000000304041a0000020103300197000000000113019f000000000014041b00000000002604350000000003050433000000000702001900000201013001970000008002700210000000000112019f0000010c02000039000000000012041b000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000002260100004100000000001004350000001101000039000000040010043f00000227010000410000075c00010430000000400100043d00000064021000390000023203000041000000000032043500000044021000390000023303000041000000000032043500000024021000390000002803000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000000101004b0000070f0000613d000000000001042d000000400100043d00000064021000390000023403000041000000000032043500000044021000390000023503000041000000000032043500000024021000390000002803000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000002010110019700000000001004350000000801000039000000200010043f000001d8010000410000000002000414000001d80320009c0000000001024019000000c00110021000000207011001c70000801002000039075a07550000040f0000000102200190000007340000613d000000000101043b000000000001042d00000000010000190000075c0001043000000201011001970000000902000039000000000202041a0000020102200197000000000121004b0000073d0000a13d000000000001042d000000400100043d00000084021000390000023603000041000000000032043500000064021000390000023703000041000000000032043500000044021000390000023803000041000000000032043500000024021000390000005303000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000021d011001c70000075c0001043000000758002104230000000102000039000000000001042d0000000002000019000000000001042d0000075a000004320000075b0001042e0000075c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e1bc9bf0400000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000085df51fc00000000000000000000000000000000000000000000000000000000a6ae0aab00000000000000000000000000000000000000000000000000000000d0f2c66200000000000000000000000000000000000000000000000000000000ddeaa8e500000000000000000000000000000000000000000000000000000000ddeaa8e600000000000000000000000000000000000000000000000000000000fe173b9700000000000000000000000000000000000000000000000000000000d0f2c66300000000000000000000000000000000000000000000000000000000d4a4ca0d00000000000000000000000000000000000000000000000000000000a6ae0aac00000000000000000000000000000000000000000000000000000000a851ae7800000000000000000000000000000000000000000000000000000000bf1fe42000000000000000000000000000000000000000000000000000000000938b5f3100000000000000000000000000000000000000000000000000000000938b5f32000000000000000000000000000000000000000000000000000000009a8a059200000000000000000000000000000000000000000000000000000000a0803ef70000000000000000000000000000000000000000000000000000000085df51fd000000000000000000000000000000000000000000000000000000008ac84c0e000000000000000000000000000000000000000000000000000000008e8acf87000000000000000000000000000000000000000000000000000000003635f3e5000000000000000000000000000000000000000000000000000000007877a796000000000000000000000000000000000000000000000000000000007c9bd1f2000000000000000000000000000000000000000000000000000000007c9bd1f30000000000000000000000000000000000000000000000000000000080b41246000000000000000000000000000000000000000000000000000000007877a79700000000000000000000000000000000000000000000000000000000796b89b9000000000000000000000000000000000000000000000000000000003635f3e60000000000000000000000000000000000000000000000000000000042cbb15c000000000000000000000000000000000000000000000000000000006ef25c3a0000000000000000000000000000000000000000000000000000000019cae4610000000000000000000000000000000000000000000000000000000019cae4620000000000000000000000000000000000000000000000000000000029f172ad0000000000000000000000000000000000000000000000000000000030e5ccbd0000000000000000000000000000000000000000000000000000000002fa57790000000000000000000000000000000000000000000000000000000006bed0360000000000000000000000000000000000000000000000000000000006e7517b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000040000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf00000000000000000000000000000001000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000004000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000002067726561746572207468616e203000000000000000000000000000000000005468652063757272656e74206261746368206e756d626572206d7573742062650000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffff9f656174656420617420746865207374617274206f6620746865206261746368005468657265206d7573742062652061207669727475616c20626c6f636b206372680000000000000000000000000000000000000000000000000000000000000068652074696d657374616d70206f66207468652063757272656e74206261746373742062652067726561746572207468616e206f7220657175616c20746f20745468652074696d657374616d70206f6620746865204c3220626c6f636b206d7500000000000000000000000000000000000000c4000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f6f727265637400000000000000000000000000000000000000000000000000005468652063757272656e74204c3220626c6f636b206861736820697320696e6374616d70206f66207468652070726576696f7573204c3220626c6f636b0000006b206d7573742062652067726561746572207468616e207468652074696d65735468652074696d657374616d70206f6620746865206e6577204c3220626c6f6300000000000000000000000000000000000000a40000000000000000000000006f6d207468652070726576696f7573206261746368000000000000000000000043616e206e6f74207265757365204c3220626c6f636b206e756d626572206672636b206d7573742062652073616d6500000000000000000000000000000000005468652074696d657374616d70206f66207468652073616d65204c3220626c6f20626c6f636b206d7573742062652073616d65000000000000000000000000005468652070726576696f75732068617368206f66207468652073616d65204c3220746865206d6964646c65206f6620746865206d696e69626c6f636b0000000043616e206e6f7420637265617465207669727475616c20626c6f636b7320696e4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000636f7272656374000000000000000000000000000000000000000000000000005468652070726576696f7573204c3220626c6f636b206861736820697320696e6420746f206265207a65726f00000000000000000000000000000000000000004c3220626c6f636b206e756d626572206973206e657665722065787065637465740000000000000000000000000000000000000000000000000000000000000055706772616465207472616e73616374696f6e206d7573742062652066697273000000000000000000000000000000000000000000000000ffffffffffffffc054696d657374616d70732073686f756c6420626520696e6372656d656e74616c496e76616c6964206e6577204c3220626c6f636b206e756d6265720000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000616c20626c6f636b00000000000000000000000000000000000000000000000043616e277420696e697469616c697a652074686520666972737420766972747520636f72726563740000000000000000000000000000000000000000000000005468652070726f766964656420626c6f636b206e756d626572206973206e6f74207468652070726576696f757320626c6f636b0000000000000000000000000062652067726561746572207468616e207468652074696d657374616d70206f665468652074696d657374616d70206f6620746865206261746368206d7573742000000000000000000000000000000000000000000000000000000000000000000be0c6cf64037e617675286e231b21587c8dedaf2b373135e6ddfb43a22f29d2", + "deployedBytecode": "0x0002000000000002000600000000000200010000000103550000006001100270000001d80010019d0000008001000039000000400010043f0000000102200190000000370000c13d0000000002000031000000040220008c000003ea0000413d0000000102000367000000000202043b000000e002200270000001dc0320009c0000004a0000213d000001ee0320009c000000580000a13d000001ef0120009c000000b10000a13d000001f00120009c0000013d0000213d000001f30120009c0000019d0000613d000001f40120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000010c01000039000000000101041a0000020101100197000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000001d8010000410000000302000039000000000012041b0000000401000039000000000201041a000001d90220019700008001022001bf000000000021041b000001da010000410000000502000039000000000012041b000000200100003900000100001004430000012000000443000001db010000410000075b0001042e000001dd0120009c0000008b0000a13d000001de0120009c000000d20000a13d000001df0120009c0000017e0000213d000001e20120009c000001b80000613d000001e30120009c000003ea0000c13d0000000001000416000000000101004b000001bb0000613d000003ea0000013d000001f80320009c000000f50000213d000001fc0320009c000001d60000613d000001fd0320009c0000022a0000613d000001fe0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c000003fe0000c13d0000000a05000039000000000305041a000000400200043d0000002001200039000000000031043500000004030000390000000103300367000000000303043b00000040042000390000000000340435000000400300003900000000003204350000020f0320009c0000044d0000213d0000006003200039000000400030043f0000000002020433000600000005001d075a06250000040f0000000602000029000000000012041b00000000010000190000075b0001042e000001e70120009c0000011a0000213d000001eb0120009c000002840000613d000001ec0120009c000002880000613d000001ed0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d075a067a0000040f0000020102200197000000400300043d0000002004300039000000000024043500000201011001970000000000130435000001d801000041000001d80230009c0000000001034019000000400110021000000202011001c70000075b0001042e000001f50120009c000002a40000613d000001f60120009c000002c00000613d000001f70120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000601000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e000001e40120009c000002dc0000613d000001e50120009c000002f80000613d000001e60120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f00000004010000390000000101100367000000000101043b0000000202000039000000000012041b00000000010000190000075b0001042e000001f90120009c0000031c0000613d000001fa0120009c000003370000613d000001fb0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c000003fe0000c13d0000010e01000039000000000201041a0000ffff0320018f0000ffff0430008c000004210000c13d000002260100004100000000001004350000001101000039000000040010043f00000227010000410000075c00010430000001e80120009c000003600000613d000001e90120009c0000037c0000613d000001ea0120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d075a06670000040f00000201022001970000008001100210000000000121019f000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e000001f10120009c000003960000613d000001f20120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d00000004010000390000000101100367000000000101043b000000400200043d000002040320009c0000044d0000213d0000010c03000039000000000503041a0000004003200039000000400030043f0000010d03000039000000000403041a00000201034001970000000006320436000000800340027000000000003604350000008006500270000000000516004b00000000050000190000047a0000a13d0000000005160049000001010550008c00000000050000190000047a0000813d00000000020204330000020102200197000000000221004b000004270000813d00000000001004350000000801000039000000200010043f000001d8010000410000000002000414000001d80320009c0000000001024019000000c00110021000000207011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000101043b000000000501041a0000047a0000013d000001e00120009c000003d90000613d000001e10120009c000003ea0000c13d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000201000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000301000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d075a06670000040f0000020102200197000000400300043d0000002004300039000000000024043500000201011001970000000000130435000001d801000041000001d80230009c0000000001034019000000400110021000000202011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000800310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d00000001010003670000000402100370000000000202043b000600000002001d0000002402100370000000000202043b0000000004020019000002010220009c000003ea0000213d0000004401100370000000000101043b000500000001001d000002010110009c000003ea0000213d000000400500043d0000000002000411000080010220008c0000042f0000c13d0000022e0250009c0000044d0000813d0000004002500039000000400020043f0000000702000039000000000202041a00000020035000390000008001200270000000000013043500000201022001970000000000250435000400000004001d000000000224004b000004530000a13d000300000001001d075a068d0000040f0000000502000029000000000121013f000002010110019800000000010000190000000101006039075a070c0000040f0000000401000029075a07360000040f0000000301000029075a07240000040f0000000602000029000000000021041b0000000301000029075a068d0000040f000500000001001d075a065b0000040f000000050200002900000201022001970000002003100039000000000023043500000004020000290000000000210435075a06a20000040f00000064010000390000000101100367000000000101043b0000000602000039000000000012041b00000004010000390000000602000029000000000021041c00000000010000190000075b0001042e0000000002000416000000000202004b000003ea0000c13d000000040200008a0000000002200031000001ff03000041000000a00420008c00000000040000190000000004034019000001ff02200197000000000502004b000000000300a019000001ff0220009c00000000020400190000000002036019000000000202004b000003ea0000c13d00000001030003670000000402300370000000000202043b000600000002001d000002010220009c000003ea0000213d0000002402300370000000000202043b000500000002001d000002010220009c000003ea0000213d0000004402300370000000000202043b000400000002001d0000006402300370000000000202043b000000000402004b0000000004000019000000010400c039000000000442004b000003ea0000c13d0000008403300370000000000303043b000300000003001d000002010330009c000003ea0000213d0000000003000411000080010330008c000003fe0000c13d000000000302004b000004820000c13d000000400400043d000002040340009c0000044d0000213d0000004003400039000000400030043f0000000903000039000100000003001d000000000503041a0000002006400039000000800350027000000000003604350000020106500197000200000006001d0000000000640435000002010450009c000004bb0000213d0000000204000029000000000404004b000004c10000c13d000000000102004b0000054c0000c13d000000400100043d00000064021000390000022c03000041000000000032043500000044021000390000022d03000041000000000032043500000024021000390000002103000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000001000416000000000101004b000003ea0000c13d000003dc0000013d0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000010e01000039000000000101041a0000ffff0110018f000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f0000010e01000039000000000201041a0000020e02200197000000000021041b00000000010000190000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000010c01000039000000000101041a0000008001100270000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000401000039000000000101041a0000020301100197000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d00000004010000390000000101100367000000000101043b000600000001001d000002030110009c000003ea0000213d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f0000000101000039000000000201041a000001d9022001970000000603000029000000000232019f000000000021041b00000000010000190000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000501000039000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000600310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000001000411000080010110008c00000000010000190000000101006039075a063b0000040f000000400100043d075a06500000040f00000001010003670000002402100370000000000202043b00000080022002100000000401100370000000000101043b0000020101100197000000000121019f0000000702000039000000000012041b00000044010000390000000101100367000000000101043b0000000602000039000000000012041b00000000010000190000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d0000000101000039000000000101041a0000020301100197000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d000000400100043d000000000200041a0000000000210435000001d802000041000001d80310009c0000000001028019000000400110021000000200011001c70000075b0001042e0000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000000301004b00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ea0000c13d000000400100043d0000000002000411000080010220008c000004100000c13d000002040210009c0000044d0000213d0000004002100039000000400020043f0000000702000039000000000202041a00000020031000390000008004200270000000000043043500000201032001970000000000310435000000400100043d000002040410009c0000044d0000213d0000004004100039000000400040043f0000000904000039000000000404041a00000020051000390000008006400270000000000065043500000201044001970000000000410435000002010120009c000004410000213d000000400100043d00000064021000390000020b03000041000000000032043500000044021000390000020c03000041000000000032043500000024021000390000002f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000001000416000000000101004b000003ea0000c13d000000040100008a0000000001100031000001ff02000041000000200310008c00000000030000190000000003024019000001ff01100197000000000401004b000000000200a019000001ff0110009c00000000010300190000000001026019000000000101004b000003ec0000613d00000000010000190000075c0001043000000004010000390000000101100367000000000101043b00000000001004350000000801000039000000200010043f00000040020000390000000001000019075a06250000040f000000000101041a000000400200043d0000000000120435000001d801000041000001d80320009c0000000001024019000000400110021000000200011001c70000075b0001042e000000400100043d00000044021000390000020803000041000000000032043500000024021000390000001f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c0001043000000044021000390000020803000041000000000032043500000024021000390000001f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c000104300000020e022001970000000103300039000000000223019f000000000021041b00000000010000190000075b0001042e000002050240009c000004470000413d000000000231004b000004470000413d000001012110011a0000000b01200039000000000501041a0000047a0000013d00000044025000390000020803000041000000000032043500000024025000390000001f03000039000000000032043500000209020000410000000000250435000000040250003900000020030000390000000000320435000001d802000041000001d80350009c0000000001020019000000000105401900000040011002100000020a011001c70000075c000104300000008001300210000000000114019f0000000302000039000000000012041c00000000010000190000075b0001042e000000400200043d000000200300003900000000033204360000000000130435000002040120009c000004640000a13d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400100043d00000044021000390000022f0300004100000000003204350000020902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c000104300000004001200039000000400010043f000001d801000041000001d80430009c000000000301801900000040033002100000000002020433000001d80420009c00000000020180190000006002200210000000000232019f0000000003000414000001d80430009c0000000001034019000000c001100210000000000121019f00000206011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000501043b000000400100043d0000000000510435000001d802000041000001d80310009c0000000001028019000000400110021000000200011001c70000075b0001042e0000000703000039000000000303041a00000201033001970000000504000029000000000334004b000004a30000813d000000400100043d000000a4021000390000021203000041000000000032043500000084021000390000021303000041000000000032043500000064021000390000021403000041000000000032043500000044021000390000021503000041000000000032043500000024021000390000006103000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c0000000001028019000000400110021000000216011001c70000075c000104300000000303000029000000000303004b0000025a0000c13d000000400100043d00000064021000390000021003000041000000000032043500000044021000390000021103000041000000000032043500000024021000390000003f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000604000029000000000443004b000004c40000613d000002010230009c000004ed0000c13d000001140000013d0000000604000029000000000443004b000004ed0000c13d000000000102004b000005370000c13d00000005010000290000000202000029000000000112004b000005750000c13d0000000601000029000000010110008a000002010210009c000001140000213d0000020101100197000001012110011a0000000b01200039000000000101041a0000000402000029000000000112004b000005cf0000c13d0000000301000029000000000101004b000005c90000613d000000400100043d00000064021000390000022403000041000000000032043500000044021000390000022503000041000000000032043500000024021000390000003c03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c0001043000000001023000390000000604000029000000000242004b000005640000c13d000000010230008a000002010420009c000001140000213d0000020102200197000001014220011a0000000b02400039000000000402041a0000000a02000039000000000502041a000000400200043d0000008006200039000000000056043500000060052000390000000000450435000000400420003900000002050000290000000000540435000000200420003900000000003404350000000000120435000002170120009c0000044d0000213d000000a001200039000000400010043f000001d801000041000001d80340009c0000000003010019000000000304401900000040033002100000000002020433000001d80420009c00000000020180190000006002200210000000000232019f0000000003000414000001d80430009c0000000001034019000000c001100210000000000121019f00000206011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000101043b0000000402000029000000000112004b000005e40000c13d000000400100043d00000005020000290000000203000029000000000232004b0000060e0000a13d000002040210009c0000044d0000213d0000004002100039000000400020043f000000200210003900000006030000290000000000320435000000050200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a000002010210009c000001140000213d000005c20000013d000000400100043d00000064021000390000021e03000041000000000032043500000044021000390000021f03000041000000000032043500000024021000390000003503000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c000104300000000601000029000000000101004b0000058a0000c13d000000400100043d00000064021000390000022a03000041000000000032043500000044021000390000022b03000041000000000032043500000024021000390000002c03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400200043d000600000002001d000002090100004100000000001204350000000401200039075a06980000040f00000006040000290000000001410049000001d802000041000001d80310009c0000000001028019000001d80340009c000000000204401900000040022002100000006001100210000000000121019f0000075c00010430000000400100043d00000064021000390000022003000041000000000032043500000044021000390000022103000041000000000032043500000024021000390000002f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400100043d0000000402000039000000000221043600000006030000290000020103300041000200000003001d000000e0033002100000000000320435000002040310009c0000044d0000213d0000004003100039000000400030043f000001d803000041000001d80420009c000000000203801900000040022002100000000001010433000001d80410009c00000000010380190000006001100210000000000121019f0000000002000414000001d80420009c0000000002038019000000c002200210000000000112019f00000206011001c70000801002000039075a07550000040f0000000102200190000003ea0000613d000000000101043b0000000402000029000000000121004b000005f90000c13d00000002010000290000020101100197000001012110011a0000000b012000390000000402000029000000000021041b000000400100043d000002040210009c0000044d0000213d0000004002100039000000400020043f000000200210003900000006030000290000000000320435000000050200002900000000002104350000008001300210000000000112019f0000000102000029000000000012041b000000010130008a0000020101100197000001012110011a0000000b012000390000000402000029000000000021041b0000000a01000039000000000001041b000000060100002900000003020000290000000503000029075a06aa0000040f00000000010000190000075b0001042e000000400100043d00000064021000390000022203000041000000000032043500000044021000390000022303000041000000000032043500000024021000390000003303000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400100043d00000064021000390000021803000041000000000032043500000044021000390000021903000041000000000032043500000024021000390000002603000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000400100043d00000064021000390000022803000041000000000032043500000044021000390000022903000041000000000032043500000024021000390000002703000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c0001043000000084021000390000021a03000041000000000032043500000064021000390000021b03000041000000000032043500000044021000390000021c03000041000000000032043500000024021000390000005d03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000021d011001c70000075c00010430000001d803000041000001d80410009c00000000010380190000004001100210000001d80420009c00000000020380190000006002200210000000000112019f0000000002000414000001d80420009c0000000002038019000000c002200210000000000112019f00000206011001c70000801002000039075a07550000040f0000000102200190000006390000613d000000000101043b000000000001042d00000000010000190000075c00010430000000000101004b0000063e0000613d000000000001042d000000400100043d00000044021000390000020803000041000000000032043500000024021000390000001f03000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020a011001c70000075c000104300000022e0210009c000006550000813d0000004001100039000000400010043f000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400100043d0000022e0210009c000006610000813d0000004002100039000000400020043f000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400300043d0000022e0130009c000006740000813d0000004001300039000000400010043f0000000701000039000000000201041a00000020043000390000008001200270000000000014043500000201022001970000000000230435000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000000400300043d0000022e0130009c000006870000813d0000004001300039000000400010043f0000000901000039000000000201041a00000020043000390000008001200270000000000014043500000201022001970000000000230435000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c000104300000020101100197000002010210009c000006920000613d0000000101100039000000000001042d000002260100004100000000001004350000001101000039000000040010043f00000227010000410000075c0001043000000040021000390000023003000041000000000032043500000020021000390000001b030000390000000000320435000000200200003900000000002104350000006001100039000000000001042d0000000021010434000002010110019700000000020204330000008002200210000000000112019f0000000702000039000000000012041b000000000001042d0000010d04000039000000000504041a000002050550009c000006c20000813d000000400500043d0000022e0650009c000006eb0000813d0000004006500039000000400060043f0000010c08000039000000000708041a0000020106700197000000000665043600000080077002700000000000760435000000000808041a000002010880009c000006bf0000213d00000000080504330000020108800198000006c50000613d0000020102200198000006d10000c13d000006ea0000013d0000000901000039000000000101041a000006e80000013d0000000707000039000000000707041a00000080077002700000000000760435000000000804041a0000023108800197000000000778019f000000000074041b0000020102200198000006f70000613d0000000007060433000000010220008a00000201077001970000000002270019000002050720009c000006f10000813d000000000026043500000201033001970000000000350435000002010210019700000000070604330000020108700197000000000828004b000006e50000413d0000008001100210000000000304041a0000020103300197000000000113019f000000000014041b00000000002604350000000003050433000000000702001900000201013001970000008002700210000000000112019f0000010c02000039000000000012041b000000000001042d000002260100004100000000001004350000004101000039000000040010043f00000227010000410000075c00010430000002260100004100000000001004350000001101000039000000040010043f00000227010000410000075c00010430000000400100043d00000064021000390000023203000041000000000032043500000044021000390000023303000041000000000032043500000024021000390000002803000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000000000101004b0000070f0000613d000000000001042d000000400100043d00000064021000390000023403000041000000000032043500000044021000390000023503000041000000000032043500000024021000390000002803000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000020d011001c70000075c00010430000002010110019700000000001004350000000801000039000000200010043f000001d8010000410000000002000414000001d80320009c0000000001024019000000c00110021000000207011001c70000801002000039075a07550000040f0000000102200190000007340000613d000000000101043b000000000001042d00000000010000190000075c0001043000000201011001970000000902000039000000000202041a0000020102200197000000000121004b0000073d0000a13d000000000001042d000000400100043d00000084021000390000023603000041000000000032043500000064021000390000023703000041000000000032043500000044021000390000023803000041000000000032043500000024021000390000005303000039000000000032043500000209020000410000000000210435000000040210003900000020030000390000000000320435000001d802000041000001d80310009c000000000102801900000040011002100000021d011001c70000075c0001043000000758002104230000000102000039000000000001042d0000000002000019000000000001042d0000075a000004320000075b0001042e0000075c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e1bc9bf0400000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000085df51fc00000000000000000000000000000000000000000000000000000000a6ae0aab00000000000000000000000000000000000000000000000000000000d0f2c66200000000000000000000000000000000000000000000000000000000ddeaa8e500000000000000000000000000000000000000000000000000000000ddeaa8e600000000000000000000000000000000000000000000000000000000fe173b9700000000000000000000000000000000000000000000000000000000d0f2c66300000000000000000000000000000000000000000000000000000000d4a4ca0d00000000000000000000000000000000000000000000000000000000a6ae0aac00000000000000000000000000000000000000000000000000000000a851ae7800000000000000000000000000000000000000000000000000000000bf1fe42000000000000000000000000000000000000000000000000000000000938b5f3100000000000000000000000000000000000000000000000000000000938b5f32000000000000000000000000000000000000000000000000000000009a8a059200000000000000000000000000000000000000000000000000000000a0803ef70000000000000000000000000000000000000000000000000000000085df51fd000000000000000000000000000000000000000000000000000000008ac84c0e000000000000000000000000000000000000000000000000000000008e8acf87000000000000000000000000000000000000000000000000000000003635f3e5000000000000000000000000000000000000000000000000000000007877a796000000000000000000000000000000000000000000000000000000007c9bd1f2000000000000000000000000000000000000000000000000000000007c9bd1f30000000000000000000000000000000000000000000000000000000080b41246000000000000000000000000000000000000000000000000000000007877a79700000000000000000000000000000000000000000000000000000000796b89b9000000000000000000000000000000000000000000000000000000003635f3e60000000000000000000000000000000000000000000000000000000042cbb15c000000000000000000000000000000000000000000000000000000006ef25c3a0000000000000000000000000000000000000000000000000000000019cae4610000000000000000000000000000000000000000000000000000000019cae4620000000000000000000000000000000000000000000000000000000029f172ad0000000000000000000000000000000000000000000000000000000030e5ccbd0000000000000000000000000000000000000000000000000000000002fa57790000000000000000000000000000000000000000000000000000000006bed0360000000000000000000000000000000000000000000000000000000006e7517b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000040000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf00000000000000000000000000000001000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000004000000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000002067726561746572207468616e203000000000000000000000000000000000005468652063757272656e74206261746368206e756d626572206d7573742062650000000000000000000000000000000000000084000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffff9f656174656420617420746865207374617274206f6620746865206261746368005468657265206d7573742062652061207669727475616c20626c6f636b206372680000000000000000000000000000000000000000000000000000000000000068652074696d657374616d70206f66207468652063757272656e74206261746373742062652067726561746572207468616e206f7220657175616c20746f20745468652074696d657374616d70206f6620746865204c3220626c6f636b206d7500000000000000000000000000000000000000c4000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f6f727265637400000000000000000000000000000000000000000000000000005468652063757272656e74204c3220626c6f636b206861736820697320696e6374616d70206f66207468652070726576696f7573204c3220626c6f636b0000006b206d7573742062652067726561746572207468616e207468652074696d65735468652074696d657374616d70206f6620746865206e6577204c3220626c6f6300000000000000000000000000000000000000a40000000000000000000000006f6d207468652070726576696f7573206261746368000000000000000000000043616e206e6f74207265757365204c3220626c6f636b206e756d626572206672636b206d7573742062652073616d6500000000000000000000000000000000005468652074696d657374616d70206f66207468652073616d65204c3220626c6f20626c6f636b206d7573742062652073616d65000000000000000000000000005468652070726576696f75732068617368206f66207468652073616d65204c3220746865206d6964646c65206f6620746865206d696e69626c6f636b0000000043616e206e6f7420637265617465207669727475616c20626c6f636b7320696e4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000636f7272656374000000000000000000000000000000000000000000000000005468652070726576696f7573204c3220626c6f636b206861736820697320696e6420746f206265207a65726f00000000000000000000000000000000000000004c3220626c6f636b206e756d626572206973206e657665722065787065637465740000000000000000000000000000000000000000000000000000000000000055706772616465207472616e73616374696f6e206d7573742062652066697273000000000000000000000000000000000000000000000000ffffffffffffffc054696d657374616d70732073686f756c6420626520696e6372656d656e74616c496e76616c6964206e6577204c3220626c6f636b206e756d6265720000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000616c20626c6f636b00000000000000000000000000000000000000000000000043616e277420696e697469616c697a652074686520666972737420766972747520636f72726563740000000000000000000000000000000000000000000000005468652070726f766964656420626c6f636b206e756d626572206973206e6f74207468652070726576696f757320626c6f636b0000000000000000000000000062652067726561746572207468616e207468652074696d657374616d70206f665468652074696d657374616d70206f6620746865206261746368206d7573742000000000000000000000000000000000000000000000000000000000000000000be0c6cf64037e617675286e231b21587c8dedaf2b373135e6ddfb43a22f29d2", "linkReferences": {}, "deployedLinkReferences": {}, "factoryDeps": {} diff --git a/src/deps/contracts/fee_estimate.yul.zbin b/src/deps/contracts/fee_estimate.yul.zbin index 2018f945..2d626c48 100644 Binary files a/src/deps/contracts/fee_estimate.yul.zbin and b/src/deps/contracts/fee_estimate.yul.zbin differ diff --git a/src/deps/contracts/fee_estimate_impersonating.yul.zbin b/src/deps/contracts/fee_estimate_impersonating.yul.zbin new file mode 100644 index 00000000..9b04373a Binary files /dev/null and b/src/deps/contracts/fee_estimate_impersonating.yul.zbin differ diff --git a/src/deps/contracts/gas_test.yul.zbin b/src/deps/contracts/gas_test.yul.zbin index 6e9351ec..59865263 100644 Binary files a/src/deps/contracts/gas_test.yul.zbin and b/src/deps/contracts/gas_test.yul.zbin differ diff --git a/src/deps/contracts/playground_batch.yul.zbin b/src/deps/contracts/playground_batch.yul.zbin index 54c91eed..3968da09 100644 Binary files a/src/deps/contracts/playground_batch.yul.zbin and b/src/deps/contracts/playground_batch.yul.zbin differ diff --git a/src/deps/contracts/playground_block.yul.zbin b/src/deps/contracts/playground_block.yul.zbin deleted file mode 100644 index 36ea9643..00000000 Binary files a/src/deps/contracts/playground_block.yul.zbin and /dev/null differ diff --git a/src/deps/contracts/proved_batch.yul.zbin b/src/deps/contracts/proved_batch.yul.zbin index c6b9ff24..a66ba559 100644 Binary files a/src/deps/contracts/proved_batch.yul.zbin and b/src/deps/contracts/proved_batch.yul.zbin differ diff --git a/src/deps/contracts/proved_batch_impersonating.yul.zbin b/src/deps/contracts/proved_batch_impersonating.yul.zbin new file mode 100644 index 00000000..9ac83eb4 Binary files /dev/null and b/src/deps/contracts/proved_batch_impersonating.yul.zbin differ diff --git a/src/deps/contracts/proved_block.yul.zbin b/src/deps/contracts/proved_block.yul.zbin deleted file mode 100644 index cd01d8dd..00000000 Binary files a/src/deps/contracts/proved_block.yul.zbin and /dev/null differ diff --git a/src/deps/system_contracts.rs b/src/deps/system_contracts.rs index 648e1afe..6ce359a0 100644 --- a/src/deps/system_contracts.rs +++ b/src/deps/system_contracts.rs @@ -1,19 +1,25 @@ use once_cell::sync::Lazy; use serde_json::Value; -use zksync_basic_types::{AccountTreeId, Address}; +use zksync_basic_types::{AccountTreeId, Address, H160}; use zksync_types::{ block::DeployedContract, ACCOUNT_CODE_STORAGE_ADDRESS, BOOTLOADER_ADDRESS, - BOOTLOADER_UTILITIES_ADDRESS, CONTRACT_DEPLOYER_ADDRESS, ECRECOVER_PRECOMPILE_ADDRESS, - EVENT_WRITER_ADDRESS, H160, IMMUTABLE_SIMULATOR_STORAGE_ADDRESS, KECCAK256_PRECOMPILE_ADDRESS, - KNOWN_CODES_STORAGE_ADDRESS, L1_MESSENGER_ADDRESS, L2_ETH_TOKEN_ADDRESS, - MSG_VALUE_SIMULATOR_ADDRESS, NONCE_HOLDER_ADDRESS, SHA256_PRECOMPILE_ADDRESS, - SYSTEM_CONTEXT_ADDRESS, + BOOTLOADER_UTILITIES_ADDRESS, COMPRESSOR_ADDRESS, CONTRACT_DEPLOYER_ADDRESS, + ECRECOVER_PRECOMPILE_ADDRESS, EVENT_WRITER_ADDRESS, IMMUTABLE_SIMULATOR_STORAGE_ADDRESS, + KECCAK256_PRECOMPILE_ADDRESS, KNOWN_CODES_STORAGE_ADDRESS, L1_MESSENGER_ADDRESS, + L2_ETH_TOKEN_ADDRESS, MSG_VALUE_SIMULATOR_ADDRESS, NONCE_HOLDER_ADDRESS, + SHA256_PRECOMPILE_ADDRESS, SYSTEM_CONTEXT_ADDRESS, }; -// TODO remove it after moving to boojum -pub const BYTECODE_COMPRESSOR_ADDRESS: Address = H160([ +/// The `ecAdd` system contract address. +pub const ECADD_PRECOMPILE_ADDRESS: Address = H160([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x0e, + 0x00, 0x00, 0x00, 0x06, +]); + +/// The `ecMul` system contract address. +pub const ECMUL_PRECOMPILE_ADDRESS: Address = H160([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, ]); pub fn bytecode_from_slice(artifact_name: &str, contents: &[u8]) -> Vec { @@ -81,9 +87,9 @@ pub static COMPILED_IN_SYSTEM_CONTRACTS: Lazy> = Lazy::new include_bytes!("contracts/BootloaderUtilities.json").to_vec(), ), ( - "BytecodeCompressor", - BYTECODE_COMPRESSOR_ADDRESS, - include_bytes!("contracts/BytecodeCompressor.json").to_vec(), + "Compressor", + COMPRESSOR_ADDRESS, + include_bytes!("contracts/Compressor.json").to_vec(), ), ] .map(|(pname, address, contents)| DeployedContract { @@ -114,6 +120,16 @@ pub static COMPILED_IN_SYSTEM_CONTRACTS: Lazy> = Lazy::new EVENT_WRITER_ADDRESS, include_bytes!("contracts/EventWriter.yul.zbin").to_vec(), ), + ( + "ECADD_PRECOMPILE_ADDRESS", + ECADD_PRECOMPILE_ADDRESS, + include_bytes!("contracts/EcAdd.yul.zbin").to_vec(), + ), + ( + "ECMUL_PRECOMPILE_ADDRESS", + ECMUL_PRECOMPILE_ADDRESS, + include_bytes!("contracts/EcMul.yul.zbin").to_vec(), + ), ] .map(|(_pname, address, contents)| DeployedContract { account_id: AccountTreeId::new(address), diff --git a/src/fork.rs b/src/fork.rs index f4cb9a27..75b3518b 100644 --- a/src/fork.rs +++ b/src/fork.rs @@ -310,6 +310,8 @@ const SUPPORTED_VERSIONS: &[ProtocolVersionId] = &[ ProtocolVersionId::Version15, ProtocolVersionId::Version16, ProtocolVersionId::Version17, + ProtocolVersionId::Version18, + ProtocolVersionId::Version19, ]; pub fn supported_protocol_versions(version: ProtocolVersionId) -> bool { diff --git a/src/main.rs b/src/main.rs index 3f0323e8..c6ae60c5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -43,8 +43,8 @@ use jsonrpc_core::MetaIoHandler; use zksync_basic_types::{H160, H256}; use crate::namespaces::{ - ConfigurationApiNamespaceT, DebugNamespaceT, EthNamespaceT, EvmNamespaceT, HardhatNamespaceT, - NetNamespaceT, Web3NamespaceT, ZksNamespaceT, + ConfigurationApiNamespaceT, DebugNamespaceT, EthNamespaceT, EthTestNodeNamespaceT, + EvmNamespaceT, HardhatNamespaceT, NetNamespaceT, Web3NamespaceT, ZksNamespaceT, }; /// List of wallets (address, private key) that we seed with tokens at start. @@ -109,6 +109,7 @@ async fn build_json_http< io.extend_with(ConfigurationApiNamespaceT::to_delegate(node.clone())); io.extend_with(DebugNamespaceT::to_delegate(node.clone())); io.extend_with(EthNamespaceT::to_delegate(node.clone())); + io.extend_with(EthTestNodeNamespaceT::to_delegate(node.clone())); io.extend_with(EvmNamespaceT::to_delegate(node.clone())); io.extend_with(HardhatNamespaceT::to_delegate(node.clone())); io.extend_with(ZksNamespaceT::to_delegate(node)); diff --git a/src/namespaces/debug.rs b/src/namespaces/debug.rs index 5a911eb1..1939ae64 100644 --- a/src/namespaces/debug.rs +++ b/src/namespaces/debug.rs @@ -7,7 +7,7 @@ use itertools::Itertools; use jsonrpc_core::{BoxFuture, Result}; use multivm::vm_latest::HistoryDisabled; use multivm::interface::VmInterface; -use multivm::vm_refunds_enhancement::{constants::ETH_CALL_GAS_LIMIT, CallTracer, Vm}; +use multivm::vm_latest::{constants::ETH_CALL_GAS_LIMIT, CallTracer, Vm}; use once_cell::sync::OnceCell; use std::sync::{Arc, RwLock}; use zksync_basic_types::H256; diff --git a/src/namespaces/eth_test.rs b/src/namespaces/eth_test.rs new file mode 100644 index 00000000..bbdebe1a --- /dev/null +++ b/src/namespaces/eth_test.rs @@ -0,0 +1,13 @@ +use jsonrpc_core::{BoxFuture, Result}; +use jsonrpc_derive::rpc; +use zksync_basic_types::H256; +use zksync_types::transaction_request::CallRequest; + +/// +/// ETH namespace extension for the test node. +/// +#[rpc] +pub trait EthTestNodeNamespaceT { + #[rpc(name = "eth_sendTransaction")] + fn send_transaction(&self, tx: CallRequest) -> BoxFuture>; +} diff --git a/src/namespaces/mod.rs b/src/namespaces/mod.rs index 555346e8..8c359b3e 100644 --- a/src/namespaces/mod.rs +++ b/src/namespaces/mod.rs @@ -1,4 +1,5 @@ mod config; +mod eth_test; mod evm; mod hardhat; mod net; @@ -9,6 +10,7 @@ use zksync_core::api_server::web3::backend_jsonrpc::namespaces::{debug, eth, zks pub use config::ConfigurationApiNamespaceT; pub use debug::DebugNamespaceT; pub use eth::EthNamespaceT; +pub use eth_test::EthTestNodeNamespaceT; pub use evm::EvmNamespaceT; pub use hardhat::HardhatNamespaceT; pub use net::NetNamespaceT; diff --git a/src/node/debug.rs b/src/node/debug.rs index 3800fa2c..bccb3830 100644 --- a/src/node/debug.rs +++ b/src/node/debug.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use multivm::interface::VmInterface; use multivm::tracers::CallTracer; use multivm::vm_latest::HistoryDisabled; -use multivm::vm_refunds_enhancement::{constants::ETH_CALL_GAS_LIMIT, ToTracerPointer, Vm}; +use multivm::vm_latest::{constants::ETH_CALL_GAS_LIMIT, ToTracerPointer, Vm}; use zksync_basic_types::H256; use zksync_core::api_server::web3::backend_jsonrpc::error::into_jsrpc_error; diff --git a/src/node/eth.rs b/src/node/eth.rs index cf7c63d1..dcd04006 100644 --- a/src/node/eth.rs +++ b/src/node/eth.rs @@ -4,7 +4,7 @@ use colored::Colorize; use futures::FutureExt; use itertools::Itertools; use multivm::interface::{ExecutionResult, TxExecutionMode}; -use multivm::vm_refunds_enhancement::constants::ETH_CALL_GAS_LIMIT; +use multivm::vm_latest::constants::ETH_CALL_GAS_LIMIT; use zksync_basic_types::{web3, AccountTreeId, Address, Bytes, H160, H256, U256, U64}; use zksync_core::api_server::web3::backend_jsonrpc::error::into_jsrpc_error; use zksync_state::ReadStorage; @@ -15,7 +15,7 @@ use zksync_types::{ l2::L2Tx, transaction_request::TransactionRequest, utils::storage_key_for_standard_token_balance, - StorageKey, L2_ETH_TOKEN_ADDRESS, + PackedEthSignature, StorageKey, L2_ETH_TOKEN_ADDRESS, }; use zksync_utils::{h256_to_u256, u256_to_h256}; use zksync_web3_decl::{ @@ -26,7 +26,7 @@ use zksync_web3_decl::{ use crate::{ filters::{FilterType, LogFilter}, fork::ForkSource, - namespaces::{EthNamespaceT, RpcResult}, + namespaces::{EthNamespaceT, EthTestNodeNamespaceT, RpcResult}, node::{InMemoryNode, TransactionResult, L2_GAS_PRICE, MAX_TX_SIZE, PROTOCOL_VERSION}, utils::{self, h256_to_u64, not_implemented, IntoBoxedFuture}, }; @@ -1261,6 +1261,107 @@ impl EthNamespa } } +impl EthTestNodeNamespaceT + for InMemoryNode +{ + /// Sends a transaction to the L2 network. Can be used for the impersonated account. + /// + /// # Arguments + /// + /// * `tx` - A `CallRequest` struct representing the transaction. + /// + /// # Returns + /// + /// A future that resolves to the hash of the transaction if successful, or an error if the transaction is invalid or execution fails. + fn send_transaction( + &self, + tx: zksync_types::transaction_request::CallRequest, + ) -> jsonrpc_core::BoxFuture> { + let chain_id = match self.get_inner().read() { + Ok(reader) => reader.fork_storage.chain_id, + Err(_) => { + return futures::future::err(into_jsrpc_error(Web3Error::InternalError)).boxed() + } + }; + + let mut tx_req = TransactionRequest::from(tx.clone()); + // EIP-1559 gas fields should be processed separately + if tx.gas_price.is_some() { + if tx.max_fee_per_gas.is_some() || tx.max_priority_fee_per_gas.is_some() { + return futures::future::err(into_jsrpc_error(Web3Error::InvalidTransactionData( + zksync_types::ethabi::Error::InvalidData, + ))) + .boxed(); + } + } else { + tx_req.gas_price = tx.max_fee_per_gas.unwrap_or_default(); + tx_req.max_priority_fee_per_gas = tx.max_priority_fee_per_gas; + if tx_req.transaction_type.is_none() { + tx_req.transaction_type = Some(zksync_types::EIP_1559_TX_TYPE.into()); + } + } + // Needed to calculate hash + tx_req.r = Some(U256::default()); + tx_req.s = Some(U256::default()); + tx_req.v = Some(U64::from(27)); + + let hash = match tx_req.get_tx_hash(chain_id) { + Ok(result) => result, + Err(e) => { + return futures::future::err(into_jsrpc_error(Web3Error::SerializationError(e))) + .boxed() + } + }; + let bytes = tx_req.get_signed_bytes( + &PackedEthSignature::from_rsv(&H256::default(), &H256::default(), 27), + chain_id, + ); + let mut l2_tx: L2Tx = match L2Tx::from_request(tx_req, MAX_TX_SIZE) { + Ok(tx) => tx, + Err(e) => { + return futures::future::err(into_jsrpc_error(Web3Error::SerializationError(e))) + .boxed() + } + }; + + // `v` was overwritten with 0 during converting into l2 tx + let mut signature = vec![0u8; 65]; + signature[64] = 27; + l2_tx.common_data.signature = signature; + + l2_tx.set_input(bytes, hash); + + match self.get_inner().read() { + Ok(reader) => { + if !reader + .impersonated_accounts + .contains(&l2_tx.common_data.initiator_address) + { + return futures::future::err(into_jsrpc_error( + Web3Error::InvalidTransactionData(zksync_types::ethabi::Error::InvalidData), + )) + .boxed(); + } + } + Err(_) => { + return futures::future::err(into_jsrpc_error(Web3Error::InternalError)).boxed() + } + } + + match self.run_l2_tx(l2_tx.clone(), TxExecutionMode::VerifyExecute) { + Ok(_) => Ok(l2_tx.hash()).into_boxed_future(), + Err(e) => { + let error_message = format!("Execution error: {}", e); + futures::future::err(into_jsrpc_error(Web3Error::SubmitTransactionError( + error_message, + l2_tx.hash().as_bytes().to_vec(), + ))) + .boxed() + } + } + } +} + #[cfg(test)] mod tests { use crate::{ diff --git a/src/node/in_memory.rs b/src/node/in_memory.rs index bc4a52fa..219c5fa7 100644 --- a/src/node/in_memory.rs +++ b/src/node/in_memory.rs @@ -7,7 +7,7 @@ use crate::{ fork::{ForkDetails, ForkSource, ForkStorage}, formatter, observability::Observability, - system_contracts::{self, Options, SystemContracts}, + system_contracts::{self, SystemContracts}, utils::{ adjust_l1_gas_price_for_tx, bytecode_to_factory_dep, create_debug_output, to_human_size, }, @@ -31,7 +31,7 @@ use multivm::interface::{ use multivm::{ tracers::CallTracer, vm_latest::HistoryDisabled, - vm_refunds_enhancement::{ + vm_latest::{ constants::{BLOCK_GAS_LIMIT, BLOCK_OVERHEAD_PUBDATA, MAX_PUBDATA_PER_BLOCK}, utils::{ fee::derive_base_fee_and_gas_per_pubdata, @@ -498,8 +498,13 @@ impl InMemoryNodeInner { let execution_mode = TxExecutionMode::EstimateFee; let (mut batch_env, _) = self.create_l1_batch_env(storage.clone()); batch_env.l1_gas_price = l1_gas_price; + let impersonating = self + .impersonated_accounts + .contains(&l2_tx.common_data.initiator_address); let system_env = self.create_system_env( - self.system_contracts.contracts_for_fee_estimate().clone(), + self.system_contracts + .contracts_for_fee_estimate(impersonating) + .clone(), execution_mode, ); @@ -1277,10 +1282,7 @@ impl InMemoryNode { l2_tx: L2Tx, execution_mode: TxExecutionMode, mut tracers: Vec< - TracerPointer< - StorageView>, - multivm::vm_refunds_enhancement::HistoryDisabled, - >, + TracerPointer>, multivm::vm_latest::HistoryDisabled>, >, ) -> Result { let inner = self @@ -1292,8 +1294,6 @@ impl InMemoryNode { let (batch_env, block_ctx) = inner.create_l1_batch_env(storage.clone()); - // if we are impersonating an account, we need to use non-verifying system contracts - let nonverifying_contracts; let bootloader_code = { if inner .impersonated_accounts @@ -1303,11 +1303,9 @@ impl InMemoryNode { "🕵️ Executing tx from impersonated account {:?}", l2_tx.common_data.initiator_address ); - nonverifying_contracts = - SystemContracts::from_options(&Options::BuiltInWithoutSecurity); - nonverifying_contracts.contracts(execution_mode) + inner.system_contracts.contracts(execution_mode, true) } else { - inner.system_contracts.contracts(execution_mode) + inner.system_contracts.contracts(execution_mode, false) } }; let system_env = inner.create_system_env(bootloader_code.clone(), execution_mode); @@ -1724,7 +1722,9 @@ mod tests { use zksync_types::utils::deployed_address_create; use super::*; - use crate::{http_fork_source::HttpForkSource, node::InMemoryNode, testing}; + use crate::{ + http_fork_source::HttpForkSource, node::InMemoryNode, system_contracts::Options, testing, + }; #[tokio::test] async fn test_run_l2_tx_validates_tx_gas_limit_too_high() { @@ -1858,7 +1858,7 @@ mod tests { testing::deploy_contract( &node, H256::repeat_byte(0x1), - private_key.clone(), + private_key, hex::decode(testing::STORAGE_CONTRACT_BYTECODE).unwrap(), None, Nonce(0), diff --git a/src/node/zks.rs b/src/node/zks.rs index fb22eed2..297cb596 100644 --- a/src/node/zks.rs +++ b/src/node/zks.rs @@ -559,7 +559,7 @@ mod tests { let result = node.estimate_fee(mock_request).await.unwrap(); - assert_eq!(result.gas_limit, U256::from(730662)); + assert_eq!(result.gas_limit, U256::from(746532)); assert_eq!(result.max_fee_per_gas, U256::from(250000000)); assert_eq!(result.max_priority_fee_per_gas, U256::from(0)); assert_eq!(result.gas_per_pubdata_limit, U256::from(4080)); diff --git a/src/system_contracts.rs b/src/system_contracts.rs index 93f952ae..b1409727 100644 --- a/src/system_contracts.rs +++ b/src/system_contracts.rs @@ -26,6 +26,8 @@ pub struct SystemContracts { pub baseline_contracts: BaseSystemContracts, pub playground_contracts: BaseSystemContracts, pub fee_estimate_contracts: BaseSystemContracts, + pub baseline_impersonating_contracts: BaseSystemContracts, + pub fee_estimate_impersonating_contracts: BaseSystemContracts, } pub fn get_deployed_contracts(options: &Options) -> Vec { @@ -50,25 +52,37 @@ impl SystemContracts { baseline_contracts: baseline_contracts(options), playground_contracts: playground(options), fee_estimate_contracts: fee_estimate_contracts(options), + baseline_impersonating_contracts: baseline_impersonating_contracts(options), + fee_estimate_impersonating_contracts: fee_estimate_impersonating_contracts(options), } } pub fn contracts_for_l2_call(&self) -> &BaseSystemContracts { - self.contracts(TxExecutionMode::EthCall) + self.contracts(TxExecutionMode::EthCall, false) } - pub fn contracts_for_fee_estimate(&self) -> &BaseSystemContracts { - self.contracts(TxExecutionMode::EstimateFee) + pub fn contracts_for_fee_estimate(&self, impersonating: bool) -> &BaseSystemContracts { + self.contracts(TxExecutionMode::EstimateFee, impersonating) } - pub fn contracts(&self, execution_mode: TxExecutionMode) -> &BaseSystemContracts { - match execution_mode { + pub fn contracts( + &self, + execution_mode: TxExecutionMode, + impersonating: bool, + ) -> &BaseSystemContracts { + match (execution_mode, impersonating) { // 'real' contracts, that do all the checks. - TxExecutionMode::VerifyExecute => &self.baseline_contracts, - // Ignore invalid sigatures. These requests are often coming unsigned, and they keep changing the + (TxExecutionMode::VerifyExecute, false) => &self.baseline_contracts, + // Ignore invalid signatures. These requests are often coming unsigned, and they keep changing the // gas limit - so the signatures are often not matching. - TxExecutionMode::EstimateFee => &self.fee_estimate_contracts, + (TxExecutionMode::EstimateFee, false) => &self.fee_estimate_contracts, // Read-only call - don't check signatures, have a lower (fixed) gas limit. - TxExecutionMode::EthCall => &self.playground_contracts, + (TxExecutionMode::EthCall, false) => &self.playground_contracts, + // Without account validation and sender related checks. + (TxExecutionMode::VerifyExecute, true) => &self.baseline_impersonating_contracts, + (TxExecutionMode::EstimateFee, true) => &self.fee_estimate_impersonating_contracts, + (TxExecutionMode::EthCall, true) => { + panic!("Account impersonating with eth_call is not supported") + } } } } @@ -134,8 +148,7 @@ pub fn playground(options: &Options) -> BaseSystemContracts { /// It sets ENSURE_RETURNED_MAGIC to 0 and BOOTLOADER_TYPE to 'playground_block' pub fn fee_estimate_contracts(options: &Options) -> BaseSystemContracts { let bootloader_bytecode = match options { - Options::BuiltIn | - Options::BuiltInWithoutSecurity => { + Options::BuiltIn | Options::BuiltInWithoutSecurity => { include_bytes!("deps/contracts/fee_estimate.yul.zbin").to_vec() } Options::Local => @@ -145,6 +158,19 @@ pub fn fee_estimate_contracts(options: &Options) -> BaseSystemContracts { bsc_load_with_bootloader(bootloader_bytecode, options) } +pub fn fee_estimate_impersonating_contracts(options: &Options) -> BaseSystemContracts { + let bootloader_bytecode = match options { + Options::BuiltIn | Options::BuiltInWithoutSecurity => { + include_bytes!("deps/contracts/fee_estimate_impersonating.yul.zbin").to_vec() + } + Options::Local => + // Account impersonating is not supported with the local contracts + read_zbin_bytecode("etc/system-contracts/bootloader/build/artifacts/fee_estimate.yul/fee_estimate.yul.zbin") + }; + + bsc_load_with_bootloader(bootloader_bytecode, options) +} + pub fn baseline_contracts(options: &Options) -> BaseSystemContracts { let bootloader_bytecode = match options { Options::BuiltIn | Options::BuiltInWithoutSecurity => { @@ -154,3 +180,14 @@ pub fn baseline_contracts(options: &Options) -> BaseSystemContracts { }; bsc_load_with_bootloader(bootloader_bytecode, options) } + +pub fn baseline_impersonating_contracts(options: &Options) -> BaseSystemContracts { + let bootloader_bytecode = match options { + Options::BuiltIn | Options::BuiltInWithoutSecurity => { + include_bytes!("deps/contracts/proved_batch_impersonating.yul.zbin").to_vec() + } + // Account impersonating is not supported with the local contracts + Options::Local => read_proved_batch_bootloader_bytecode(), + }; + bsc_load_with_bootloader(bootloader_bytecode, options) +} diff --git a/src/testing.rs b/src/testing.rs index 811a5b94..bd150752 100644 --- a/src/testing.rs +++ b/src/testing.rs @@ -656,7 +656,7 @@ pub fn default_tx_debug_info() -> DebugCall { /// Decodes a `bytes` tx result to its concrete parameter type. pub fn decode_tx_result(output: &[u8], param_type: ParamType) -> Token { - let result = ethabi::decode(&vec![ParamType::Bytes], &output).expect("failed decoding output"); + let result = ethabi::decode(&[ParamType::Bytes], output).expect("failed decoding output"); if result.is_empty() { panic!("result was empty"); } @@ -665,8 +665,7 @@ pub fn decode_tx_result(output: &[u8], param_type: ParamType) -> Token { .clone() .into_bytes() .expect("failed converting result to bytes"); - let result = - ethabi::decode(&vec![param_type], &result_bytes).expect("failed converting output"); + let result = ethabi::decode(&[param_type], &result_bytes).expect("failed converting output"); if result.is_empty() { panic!("decoded result was empty"); } diff --git a/src/utils.rs b/src/utils.rs index aab3e61c..41177594 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -6,7 +6,7 @@ use chrono::{DateTime, Utc}; use futures::Future; use multivm::interface::{ExecutionResult, VmExecutionResultAndLogs, VmInterface}; use multivm::vm_latest::HistoryDisabled; -use multivm::vm_refunds_enhancement::{utils::fee::derive_base_fee_and_gas_per_pubdata, Vm}; +use multivm::vm_latest::{utils::fee::derive_base_fee_and_gas_per_pubdata, Vm}; use zksync_basic_types::{H256, U256, U64}; use zksync_state::StorageView; use zksync_state::WriteStorage;