@elizaos/autonomous 2.0.0-alpha.21 → 2.0.0-alpha.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -6
- package/test/agent-export.e2e.test.ts +376 -0
- package/test/agent-orchestration.e2e.test.ts +1568 -0
- package/test/agent-restart-recovery.e2e.test.ts +149 -0
- package/test/agent-runtime.e2e.test.ts +1515 -0
- package/test/anvil-contracts.e2e.test.ts +533 -0
- package/test/anvil-helper.ts +285 -0
- package/test/api-auth-live.e2e.test.ts +519 -0
- package/test/api-auth.e2e.test.ts +1039 -0
- package/test/api-server.e2e.test.ts +4582 -0
- package/test/apps-e2e.e2e.test.ts +1108 -0
- package/test/auth-modules.e2e.test.ts +71 -0
- package/test/cloud-auth-state.e2e.test.ts +145 -0
- package/test/cloud-persistence.e2e.test.ts +260 -0
- package/test/cloud-providers.e2e.test.ts +781 -0
- package/test/config-hot-reload.e2e.test.ts +131 -0
- package/test/contract-deployer.ts +151 -0
- package/test/contracts/MockMiladyAgentRegistry.sol +216 -0
- package/test/contracts/MockMiladyCollection.sol +195 -0
- package/test/contracts/cache/solidity-files-cache.json +1 -0
- package/test/contracts/foundry.toml +14 -0
- package/test/contracts/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/test/contracts/lib/openzeppelin-contracts/.codecov.yml +12 -0
- package/test/contracts/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/test/contracts/lib/openzeppelin-contracts/.eslintrc +20 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +49 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/actions/setup/action.yml +19 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +55 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/checks.yml +111 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +68 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +218 -0
- package/test/contracts/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +30 -0
- package/test/contracts/lib/openzeppelin-contracts/.gitmodules +7 -0
- package/test/contracts/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/test/contracts/lib/openzeppelin-contracts/.prettierrc +14 -0
- package/test/contracts/lib/openzeppelin-contracts/.solcover.js +13 -0
- package/test/contracts/lib/openzeppelin-contracts/.solhint.json +14 -0
- package/test/contracts/lib/openzeppelin-contracts/CHANGELOG.md +743 -0
- package/test/contracts/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/test/contracts/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/test/contracts/lib/openzeppelin-contracts/GUIDELINES.md +117 -0
- package/test/contracts/lib/openzeppelin-contracts/LICENSE +22 -0
- package/test/contracts/lib/openzeppelin-contracts/README.md +90 -0
- package/test/contracts/lib/openzeppelin-contracts/RELEASING.md +47 -0
- package/test/contracts/lib/openzeppelin-contracts/SECURITY.md +42 -0
- package/test/contracts/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/test/contracts/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/audits/README.md +16 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/Makefile +54 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/README.md +60 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/diff/token_ERC721_ERC721.sol.patch +14 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/AccessControlDefaultAdminRulesHarness.sol +47 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol +7 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/DoubleEndedQueueHarness.sol +59 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20FlashMintHarness.sol +36 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20PermitHarness.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20WrapperHarness.sol +25 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol +13 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC721Harness.sol +37 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol +11 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/EnumerableMapHarness.sol +55 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/EnumerableSetHarness.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/InitializableHarness.sol +23 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol +9 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol +9 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol +19 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol +12 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/run.js +146 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +126 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +500 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +366 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC20.spec +414 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +48 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +198 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC721.spec +589 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +334 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +247 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/Initializable.spec +165 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/Ownable.spec +78 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +275 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +1 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +7 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC3156.spec +5 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +20 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
- package/test/contracts/lib/openzeppelin-contracts/certora/specs.json +86 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControl.sol +248 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControlCrossChain.sol +45 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControlDefaultAdminRules.sol +383 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol +64 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol +88 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/IAccessControlDefaultAdminRules.sol +172 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol +31 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/Ownable.sol +83 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol +57 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/access/README.adoc +27 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/CrossChainEnabled.sol +54 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/README.adoc +34 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/amb/CrossChainEnabledAMB.sol +49 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/amb/LibAMB.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol +44 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol +40 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/LibArbitrumL1.sol +42 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/LibArbitrumL2.sol +45 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/errors.sol +7 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/optimism/CrossChainEnabledOptimism.sol +41 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/optimism/LibOptimism.sol +36 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol +72 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/finance/PaymentSplitter.sol +214 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/finance/README.adoc +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol +145 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/Governor.sol +723 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol +313 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/README.adoc +176 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol +422 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/compatibility/GovernorCompatibilityBravo.sol +333 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/compatibility/IGovernorCompatibilityBravo.sol +118 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol +100 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol +105 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalThreshold.sol +23 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol +110 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol +190 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol +166 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol +55 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesComp.sol +55 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +121 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/IGovernorTimelock.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol +56 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol +244 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol +19 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol +80 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol +29 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol +21 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol +25 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol +7 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol +29 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol +232 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol +28 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol +18 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol +9 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol +6 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +73 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC2612.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol +54 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/metatx/MinimalForwarder.sol +72 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/metatx/README.adoc +12 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/AccessControlCrossChainMock.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol +51 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol +19 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol +61 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ConditionalEscrowMock.sol +18 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol +57 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol +16 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol +12 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol +7 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol +5 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol +18 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC20Mock.sol +16 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC20Reentrant.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol +27 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol +53 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol +16 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol +130 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/MulticallTest.sol +23 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol +131 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol +31 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/PullPaymentMock.sol +15 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol +12 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol +51 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol +61 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/SafeMathMemoryCheck.sol +72 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol +49 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol +77 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/TimersBlockNumberImpl.sol +39 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/TimersTimestampImpl.sol +39 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol +45 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol +174 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/crosschain/bridges.sol +94 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/crosschain/receivers.sol +54 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol +100 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol +88 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol +24 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol +31 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCompMock.sol +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCompatibilityBravoMock.sol +100 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol +28 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol +45 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol +60 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol +60 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol +50 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol +11 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSLegacy.sol +54 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol +33 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol +47 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol +9 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol +13 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol +28 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20PermitNoRevertMock.sol +36 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol +19 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol +262 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol +40 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +51 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol +61 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol +42 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol +17 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC777Mock.sol +13 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC777SenderRecipientMock.sol +152 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/VotesTimestamp.sol +40 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/wizard/MyGovernor1.sol +79 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/wizard/MyGovernor2.sol +85 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/wizard/MyGovernor3.sol +94 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/Clones.sol +88 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol +32 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol +157 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol +86 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol +61 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol +16 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol +65 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol +81 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +191 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol +166 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol +99 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/security/Pausable.sol +105 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/security/PullPayment.sol +74 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/security/README.adoc +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol +77 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol +497 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol +119 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol +58 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +49 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +32 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +44 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol +64 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +63 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +22 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol +114 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/presets/README.md +1 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol +36 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Receiver.sol +19 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol +365 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol +78 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +80 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol +39 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol +37 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol +109 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol +95 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Snapshot.sol +191 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol +290 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20VotesComp.sol +46 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol +73 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol +256 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol +28 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol +90 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol +30 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol +94 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/README.md +1 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol +143 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/TokenTimelock.sol +72 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol +466 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol +132 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol +27 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +73 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol +148 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol +159 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol +40 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol +38 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol +74 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol +97 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol +29 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol +27 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/draft-ERC721Votes.sol +9 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol +132 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/presets/README.md +1 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol +23 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/ERC777.sol +514 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777.sol +200 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Sender.sol +35 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/README.adoc +32 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol +30 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol +107 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol +244 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Arrays.sol +105 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Base64.sol +101 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Checkpoints.sol +560 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol +28 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Counters.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Create2.sol +75 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Multicall.sol +39 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/README.adoc +113 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol +122 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol +138 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Strings.sol +85 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Timers.sol +75 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol +217 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol +142 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol +227 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol +50 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol +8 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/escrow/ConditionalEscrow.sol +25 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/escrow/Escrow.sol +67 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/escrow/RefundEscrow.sol +100 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol +29 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol +126 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Storage.sol +42 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC1820Implementer.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol +25 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC1820Implementer.sol +20 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC1820Registry.sol +112 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/Math.sol +339 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol +1136 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol +215 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SignedSafeMath.sol +68 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol +51 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol +170 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol +598 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol +378 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/amb/IAMB.sol +41 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IArbSys.sol +134 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IBridge.sol +102 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IDelayedMessageProvider.sol +16 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IInbox.sol +152 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IOutbox.sol +117 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol +86 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/optimism/ICrossDomainMessenger.sol +34 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/optimism/LICENSE +22 -0
- package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/polygon/IFxMessageProcessor.sol +7 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/antora.yml +6 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +23 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +219 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crosschain.adoc +210 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +11 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +19 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +153 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +113 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +85 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +90 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc777.adoc +75 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +131 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +237 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +65 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/releases-stability.adoc +85 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +32 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +73 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +190 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/templates/contract.hbs +85 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/test/contracts/lib/openzeppelin-contracts/docs/templates/properties.js +45 -0
- package/test/contracts/lib/openzeppelin-contracts/foundry.toml +3 -0
- package/test/contracts/lib/openzeppelin-contracts/hardhat/env-artifacts.js +24 -0
- package/test/contracts/lib/openzeppelin-contracts/hardhat/env-contract.js +10 -0
- package/test/contracts/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/test/contracts/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/test/contracts/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/test/contracts/lib/openzeppelin-contracts/hardhat.config.js +118 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.prop.sol +404 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.test.sol +349 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +92 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +3 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/README.md +250 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/foundry.toml +21 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/.github/workflows/build.yml +41 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/LICENSE +674 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/Makefile +14 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/default.nix +4 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/demo/demo.sol +222 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/package.json +15 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.sol +469 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.t.sol +313 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Base.sol +33 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Script.sol +26 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdAssertions.sol +376 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdChains.sol +233 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdCheats.sol +624 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdError.sol +15 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdInvariant.sol +92 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdJson.sol +179 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdMath.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdStorage.sol +327 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdStyle.sol +333 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdUtils.sol +189 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Test.sol +32 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Vm.sol +409 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/console.sol +1533 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/console2.sol +1546 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC165.sol +12 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC20.sol +43 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC721.sol +164 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IMulticall3.sol +73 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdAssertions.t.sol +954 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdChains.t.sol +160 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdCheats.t.sol +401 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdError.t.sol +118 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdMath.t.sol +197 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdStorage.t.sol +283 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdStyle.t.sol +110 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdUtils.t.sol +297 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol +10 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +10 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol +10 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +10 -0
- package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
- package/test/contracts/lib/openzeppelin-contracts/logo.svg +15 -0
- package/test/contracts/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/test/contracts/lib/openzeppelin-contracts/package-lock.json +28833 -0
- package/test/contracts/lib/openzeppelin-contracts/package.json +96 -0
- package/test/contracts/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/test/contracts/lib/openzeppelin-contracts/renovate.json +4 -0
- package/test/contracts/lib/openzeppelin-contracts/requirements.txt +1 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +19 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +243 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +40 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +54 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/gen-nav.js +41 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/run.js +49 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +304 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +22 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +256 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +310 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +250 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +163 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +87 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/helpers.js +37 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/migrate-imports.js +180 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/prepack.sh +12 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/prepare-contracts-package.sh +15 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/prepare.sh +10 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +47 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/update-docs-branch.js +63 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +44 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +35 -0
- package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +481 -0
- package/test/contracts/lib/openzeppelin-contracts/slither.config.json +5 -0
- package/test/contracts/lib/openzeppelin-contracts/test/TESTING.md +3 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControl.behavior.js +867 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControl.test.js +12 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControlCrossChain.test.js +49 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControlDefaultAdminRules.test.js +25 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControlEnumerable.test.js +17 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/Ownable.test.js +59 -0
- package/test/contracts/lib/openzeppelin-contracts/test/access/Ownable2Step.test.js +67 -0
- package/test/contracts/lib/openzeppelin-contracts/test/crosschain/CrossChainEnabled.test.js +78 -0
- package/test/contracts/lib/openzeppelin-contracts/test/finance/PaymentSplitter.test.js +217 -0
- package/test/contracts/lib/openzeppelin-contracts/test/finance/VestingWallet.behavior.js +59 -0
- package/test/contracts/lib/openzeppelin-contracts/test/finance/VestingWallet.test.js +67 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/Governor.t.sol +55 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/Governor.test.js +782 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/TimelockController.test.js +1254 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/compatibility/GovernorCompatibilityBravo.test.js +283 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorComp.test.js +88 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorERC721.test.js +115 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorPreventLateQuorum.test.js +189 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockCompound.test.js +352 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockControl.test.js +445 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesQuorumFraction.test.js +154 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorWithParams.test.js +173 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/utils/EIP6372.behavior.js +23 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/utils/Votes.behavior.js +361 -0
- package/test/contracts/lib/openzeppelin-contracts/test/governance/utils/Votes.test.js +71 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/chainid.js +10 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/create2.js +11 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/crosschain.js +61 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/customError.js +24 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/eip712.js +67 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/enums.js +12 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/erc1967.js +24 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/governance.js +201 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/map-values.js +7 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/sign.js +63 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/time.js +17 -0
- package/test/contracts/lib/openzeppelin-contracts/test/helpers/txpool.js +38 -0
- package/test/contracts/lib/openzeppelin-contracts/test/metatx/ERC2771Context.test.js +175 -0
- package/test/contracts/lib/openzeppelin-contracts/test/metatx/MinimalForwarder.test.js +169 -0
- package/test/contracts/lib/openzeppelin-contracts/test/migrate-imports.test.js +33 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/Clones.behaviour.js +136 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/Clones.test.js +61 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js +13 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/Proxy.behaviour.js +225 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/beacon/BeaconProxy.test.js +139 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/beacon/UpgradeableBeacon.test.js +44 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/transparent/ProxyAdmin.test.js +127 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +433 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.test.js +17 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/utils/Initializable.test.js +218 -0
- package/test/contracts/lib/openzeppelin-contracts/test/proxy/utils/UUPSUpgradeable.test.js +85 -0
- package/test/contracts/lib/openzeppelin-contracts/test/security/Pausable.test.js +85 -0
- package/test/contracts/lib/openzeppelin-contracts/test/security/PullPayment.test.js +51 -0
- package/test/contracts/lib/openzeppelin-contracts/test/security/ReentrancyGuard.test.js +43 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.behavior.js +767 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.test.js +235 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Burnable.test.js +67 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Pausable.test.js +108 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Supply.test.js +107 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js +66 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/presets/ERC1155PresetMinterPauser.test.js +156 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Holder.test.js +64 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/ERC20.behavior.js +322 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/ERC20.test.js +305 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.behavior.js +106 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.test.js +20 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.behavior.js +32 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.test.js +23 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20FlashMint.test.js +204 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Pausable.test.js +133 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Snapshot.test.js +207 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Votes.test.js +578 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20VotesComp.test.js +543 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Wrapper.test.js +190 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol +42 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.test.js +1031 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20Permit.test.js +103 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/presets/ERC20PresetFixedSupply.test.js +42 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/presets/ERC20PresetMinterPauser.test.js +110 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/utils/SafeERC20.test.js +350 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/utils/TokenTimelock.test.js +71 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js +893 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js +15 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721Enumerable.test.js +20 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Burnable.test.js +70 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.t.sol +122 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.test.js +206 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Pausable.test.js +92 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Royalty.test.js +41 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721URIStorage.test.js +100 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Votes.test.js +184 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Wrapper.test.js +283 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/presets/ERC721PresetMinterPauserAutoId.test.js +122 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Holder.test.js +22 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC777/ERC777.behavior.js +597 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC777/ERC777.test.js +556 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/ERC777/presets/ERC777PresetFixedSupply.test.js +49 -0
- package/test/contracts/lib/openzeppelin-contracts/test/token/common/ERC2981.behavior.js +157 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Address.test.js +361 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Arrays.test.js +123 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Base64.test.js +43 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Checkpoints.t.sol +347 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Checkpoints.test.js +255 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Context.behavior.js +42 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Context.test.js +17 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Counters.test.js +84 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Create2.test.js +89 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Multicall.test.js +68 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/ShortStrings.t.sol +55 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/ShortStrings.test.js +55 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/StorageSlot.test.js +210 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/Strings.test.js +150 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/TimersBlockNumberImpl.test.js +55 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/TimersTimestamp.test.js +55 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/ECDSA.test.js +260 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/EIP712.test.js +103 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/MerkleProof.test.js +200 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/SignatureChecker.test.js +87 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/ConditionalEscrow.test.js +37 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/Escrow.behavior.js +90 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/Escrow.test.js +14 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/RefundEscrow.test.js +143 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js +11 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165Checker.test.js +302 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165Storage.test.js +23 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC1820Implementer.test.js +71 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/SupportsInterface.behavior.js +146 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/math/Math.t.sol +217 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/math/Math.test.js +289 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SafeCast.test.js +152 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SafeMath.test.js +433 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SignedMath.test.js +95 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SignedSafeMath.test.js +152 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/BitMap.test.js +145 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/DoubleEndedQueue.test.js +99 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.behavior.js +185 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.test.js +154 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.behavior.js +129 -0
- package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.test.js +79 -0
- package/test/contracts/out/AccessControl.sol/AccessControl.json +1 -0
- package/test/contracts/out/AccessControlCrossChain.sol/AccessControlCrossChain.json +1 -0
- package/test/contracts/out/AccessControlCrossChainMock.sol/AccessControlCrossChainMock.json +1 -0
- package/test/contracts/out/AccessControlDefaultAdminRules.sol/AccessControlDefaultAdminRules.json +1 -0
- package/test/contracts/out/AccessControlEnumerable.sol/AccessControlEnumerable.json +1 -0
- package/test/contracts/out/Address.sol/Address.json +1 -0
- package/test/contracts/out/Arrays.sol/Arrays.json +1 -0
- package/test/contracts/out/ArraysMock.sol/AddressArraysMock.json +1 -0
- package/test/contracts/out/ArraysMock.sol/Bytes32ArraysMock.json +1 -0
- package/test/contracts/out/ArraysMock.sol/Uint256ArraysMock.json +1 -0
- package/test/contracts/out/BadBeacon.sol/BadBeaconNoImpl.json +1 -0
- package/test/contracts/out/BadBeacon.sol/BadBeaconNotContract.json +1 -0
- package/test/contracts/out/Base.sol/CommonBase.json +1 -0
- package/test/contracts/out/Base.sol/ScriptBase.json +1 -0
- package/test/contracts/out/Base.sol/TestBase.json +1 -0
- package/test/contracts/out/Base64.sol/Base64.json +1 -0
- package/test/contracts/out/Base64Dirty.sol/Base64Dirty.json +1 -0
- package/test/contracts/out/BeaconProxy.sol/BeaconProxy.json +1 -0
- package/test/contracts/out/BitMaps.sol/BitMaps.json +1 -0
- package/test/contracts/out/CallReceiverMock.sol/CallReceiverMock.json +1 -0
- package/test/contracts/out/Checkpoints.sol/Checkpoints.json +1 -0
- package/test/contracts/out/Checkpoints.t.sol/CheckpointsHistoryTest.json +1 -0
- package/test/contracts/out/Checkpoints.t.sol/CheckpointsTrace160Test.json +1 -0
- package/test/contracts/out/Checkpoints.t.sol/CheckpointsTrace224Test.json +1 -0
- package/test/contracts/out/ClashingImplementation.sol/ClashingImplementation.json +1 -0
- package/test/contracts/out/Clones.sol/Clones.json +1 -0
- package/test/contracts/out/CompTimelock.sol/CompTimelock.json +1 -0
- package/test/contracts/out/CompilationScript.sol/CompilationScript.json +1 -0
- package/test/contracts/out/CompilationScriptBase.sol/CompilationScriptBase.json +1 -0
- package/test/contracts/out/CompilationTest.sol/CompilationTest.json +1 -0
- package/test/contracts/out/CompilationTestBase.sol/CompilationTestBase.json +1 -0
- package/test/contracts/out/ConditionalEscrow.sol/ConditionalEscrow.json +1 -0
- package/test/contracts/out/ConditionalEscrowMock.sol/ConditionalEscrowMock.json +1 -0
- package/test/contracts/out/Context.sol/Context.json +1 -0
- package/test/contracts/out/ContextMock.sol/ContextMock.json +1 -0
- package/test/contracts/out/ContextMock.sol/ContextMockCaller.json +1 -0
- package/test/contracts/out/Counters.sol/Counters.json +1 -0
- package/test/contracts/out/Create2.sol/Create2.json +1 -0
- package/test/contracts/out/CrossChainEnabled.sol/CrossChainEnabled.json +1 -0
- package/test/contracts/out/CrossChainEnabledAMB.sol/CrossChainEnabledAMB.json +1 -0
- package/test/contracts/out/CrossChainEnabledArbitrumL1.sol/CrossChainEnabledArbitrumL1.json +1 -0
- package/test/contracts/out/CrossChainEnabledArbitrumL2.sol/CrossChainEnabledArbitrumL2.json +1 -0
- package/test/contracts/out/CrossChainEnabledOptimism.sol/CrossChainEnabledOptimism.json +1 -0
- package/test/contracts/out/CrossChainEnabledPolygonChild.sol/CrossChainEnabledPolygonChild.json +1 -0
- package/test/contracts/out/DoubleEndedQueue.sol/DoubleEndedQueue.json +1 -0
- package/test/contracts/out/DummyImplementation.sol/DummyImplementation.json +1 -0
- package/test/contracts/out/DummyImplementation.sol/DummyImplementationV2.json +1 -0
- package/test/contracts/out/DummyImplementation.sol/Impl.json +1 -0
- package/test/contracts/out/ECDSA.sol/ECDSA.json +1 -0
- package/test/contracts/out/EIP712.sol/EIP712.json +1 -0
- package/test/contracts/out/EIP712Verifier.sol/EIP712Verifier.json +1 -0
- package/test/contracts/out/ERC1155.sol/ERC1155.json +1 -0
- package/test/contracts/out/ERC1155Burnable.sol/ERC1155Burnable.json +1 -0
- package/test/contracts/out/ERC1155Holder.sol/ERC1155Holder.json +1 -0
- package/test/contracts/out/ERC1155Pausable.sol/ERC1155Pausable.json +1 -0
- package/test/contracts/out/ERC1155PresetMinterPauser.sol/ERC1155PresetMinterPauser.json +1 -0
- package/test/contracts/out/ERC1155Receiver.sol/ERC1155Receiver.json +1 -0
- package/test/contracts/out/ERC1155ReceiverMock.sol/ERC1155ReceiverMock.json +1 -0
- package/test/contracts/out/ERC1155Supply.sol/ERC1155Supply.json +1 -0
- package/test/contracts/out/ERC1155URIStorage.sol/ERC1155URIStorage.json +1 -0
- package/test/contracts/out/ERC1271WalletMock.sol/ERC1271MaliciousMock.json +1 -0
- package/test/contracts/out/ERC1271WalletMock.sol/ERC1271WalletMock.json +1 -0
- package/test/contracts/out/ERC165.sol/ERC165.json +1 -0
- package/test/contracts/out/ERC165Checker.sol/ERC165Checker.json +1 -0
- package/test/contracts/out/ERC165MaliciousData.sol/ERC165MaliciousData.json +1 -0
- package/test/contracts/out/ERC165MissingData.sol/ERC165MissingData.json +1 -0
- package/test/contracts/out/ERC165NotSupported.sol/ERC165NotSupported.json +1 -0
- package/test/contracts/out/ERC165ReturnBomb.sol/ERC165ReturnBombMock.json +1 -0
- package/test/contracts/out/ERC165Storage.sol/ERC165Storage.json +1 -0
- package/test/contracts/out/ERC1820Implementer.sol/ERC1820Implementer.json +1 -0
- package/test/contracts/out/ERC1967Proxy.sol/ERC1967Proxy.json +1 -0
- package/test/contracts/out/ERC1967Upgrade.sol/ERC1967Upgrade.json +1 -0
- package/test/contracts/out/ERC20.sol/ERC20.json +1 -0
- package/test/contracts/out/ERC20Burnable.sol/ERC20Burnable.json +1 -0
- package/test/contracts/out/ERC20Capped.sol/ERC20Capped.json +1 -0
- package/test/contracts/out/ERC20DecimalsMock.sol/ERC20DecimalsMock.json +1 -0
- package/test/contracts/out/ERC20ExcessDecimalsMock.sol/ERC20ExcessDecimalsMock.json +1 -0
- package/test/contracts/out/ERC20FlashMint.sol/ERC20FlashMint.json +1 -0
- package/test/contracts/out/ERC20FlashMintMock.sol/ERC20FlashMintMock.json +1 -0
- package/test/contracts/out/ERC20ForceApproveMock.sol/ERC20ForceApproveMock.json +1 -0
- package/test/contracts/out/ERC20Mock.sol/ERC20Mock.json +1 -0
- package/test/contracts/out/ERC20MulticallMock.sol/ERC20MulticallMock.json +1 -0
- package/test/contracts/out/ERC20NoReturnMock.sol/ERC20NoReturnMock.json +1 -0
- package/test/contracts/out/ERC20Pausable.sol/ERC20Pausable.json +1 -0
- package/test/contracts/out/ERC20Permit.sol/ERC20Permit.json +1 -0
- package/test/contracts/out/ERC20PermitNoRevertMock.sol/ERC20PermitNoRevertMock.json +1 -0
- package/test/contracts/out/ERC20PresetFixedSupply.sol/ERC20PresetFixedSupply.json +1 -0
- package/test/contracts/out/ERC20PresetMinterPauser.sol/ERC20PresetMinterPauser.json +1 -0
- package/test/contracts/out/ERC20Reentrant.sol/ERC20Reentrant.json +1 -0
- package/test/contracts/out/ERC20ReturnFalseMock.sol/ERC20ReturnFalseMock.json +1 -0
- package/test/contracts/out/ERC20Snapshot.sol/ERC20Snapshot.json +1 -0
- package/test/contracts/out/ERC20Votes.sol/ERC20Votes.json +1 -0
- package/test/contracts/out/ERC20VotesComp.sol/ERC20VotesComp.json +1 -0
- package/test/contracts/out/ERC20VotesLegacyMock.sol/ERC20VotesLegacyMock.json +1 -0
- package/test/contracts/out/ERC20Wrapper.sol/ERC20Wrapper.json +1 -0
- package/test/contracts/out/ERC2771Context.sol/ERC2771Context.json +1 -0
- package/test/contracts/out/ERC2771ContextMock.sol/ERC2771ContextMock.json +1 -0
- package/test/contracts/out/ERC2981.sol/ERC2981.json +1 -0
- package/test/contracts/out/ERC3156FlashBorrowerMock.sol/ERC3156FlashBorrowerMock.json +1 -0
- package/test/contracts/out/ERC4626.prop.sol/ERC4626Prop.json +1 -0
- package/test/contracts/out/ERC4626.prop.sol/IERC20.json +1 -0
- package/test/contracts/out/ERC4626.prop.sol/IERC4626.json +1 -0
- package/test/contracts/out/ERC4626.sol/ERC4626.json +1 -0
- package/test/contracts/out/ERC4626.t.sol/ERC4626StdTest.json +1 -0
- package/test/contracts/out/ERC4626.t.sol/ERC4626VaultOffsetMock.json +1 -0
- package/test/contracts/out/ERC4626.test.sol/ERC4626Test.json +1 -0
- package/test/contracts/out/ERC4626.test.sol/IMockERC20.json +1 -0
- package/test/contracts/out/ERC4626Fees.sol/ERC4626Fees.json +1 -0
- package/test/contracts/out/ERC4626Mock.sol/ERC4626Mock.json +1 -0
- package/test/contracts/out/ERC4626OffsetMock.sol/ERC4626OffsetMock.json +1 -0
- package/test/contracts/out/ERC4646FeesMock.sol/ERC4626FeesMock.json +1 -0
- package/test/contracts/out/ERC721.sol/ERC721.json +1 -0
- package/test/contracts/out/ERC721Burnable.sol/ERC721Burnable.json +1 -0
- package/test/contracts/out/ERC721Consecutive.sol/ERC721Consecutive.json +1 -0
- package/test/contracts/out/ERC721Consecutive.t.sol/ERC721ConsecutiveTarget.json +1 -0
- package/test/contracts/out/ERC721Consecutive.t.sol/ERC721ConsecutiveTest.json +1 -0
- package/test/contracts/out/ERC721ConsecutiveEnumerableMock.sol/ERC721ConsecutiveEnumerableMock.json +1 -0
- package/test/contracts/out/ERC721ConsecutiveMock.sol/ERC721ConsecutiveMock.json +1 -0
- package/test/contracts/out/ERC721ConsecutiveMock.sol/ERC721ConsecutiveNoConstructorMintMock.json +1 -0
- package/test/contracts/out/ERC721Enumerable.sol/ERC721Enumerable.json +1 -0
- package/test/contracts/out/ERC721Holder.sol/ERC721Holder.json +1 -0
- package/test/contracts/out/ERC721Pausable.sol/ERC721Pausable.json +1 -0
- package/test/contracts/out/ERC721PresetMinterPauserAutoId.sol/ERC721PresetMinterPauserAutoId.json +1 -0
- package/test/contracts/out/ERC721ReceiverMock.sol/ERC721ReceiverMock.json +1 -0
- package/test/contracts/out/ERC721Royalty.sol/ERC721Royalty.json +1 -0
- package/test/contracts/out/ERC721URIStorage.sol/ERC721URIStorage.json +1 -0
- package/test/contracts/out/ERC721URIStorageMock.sol/ERC721URIStorageMock.json +1 -0
- package/test/contracts/out/ERC721Votes.sol/ERC721Votes.json +1 -0
- package/test/contracts/out/ERC721Wrapper.sol/ERC721Wrapper.json +1 -0
- package/test/contracts/out/ERC777.sol/ERC777.json +1 -0
- package/test/contracts/out/ERC777Mock.sol/ERC777Mock.json +1 -0
- package/test/contracts/out/ERC777PresetFixedSupply.sol/ERC777PresetFixedSupply.json +1 -0
- package/test/contracts/out/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock.json +1 -0
- package/test/contracts/out/EnumerableMap.sol/EnumerableMap.json +1 -0
- package/test/contracts/out/EnumerableSet.sol/EnumerableSet.json +1 -0
- package/test/contracts/out/Escrow.sol/Escrow.json +1 -0
- package/test/contracts/out/EtherReceiverMock.sol/EtherReceiverMock.json +1 -0
- package/test/contracts/out/Governor.sol/Governor.json +1 -0
- package/test/contracts/out/Governor.t.sol/GovernorInternalTest.json +1 -0
- package/test/contracts/out/GovernorCompMock.sol/GovernorCompMock.json +1 -0
- package/test/contracts/out/GovernorCompatibilityBravo.sol/GovernorCompatibilityBravo.json +1 -0
- package/test/contracts/out/GovernorCompatibilityBravoMock.sol/GovernorCompatibilityBravoMock.json +1 -0
- package/test/contracts/out/GovernorCountingSimple.sol/GovernorCountingSimple.json +1 -0
- package/test/contracts/out/GovernorMock.sol/GovernorMock.json +1 -0
- package/test/contracts/out/GovernorPreventLateQuorum.sol/GovernorPreventLateQuorum.json +1 -0
- package/test/contracts/out/GovernorPreventLateQuorumMock.sol/GovernorPreventLateQuorumMock.json +1 -0
- package/test/contracts/out/GovernorProposalThreshold.sol/GovernorProposalThreshold.json +1 -0
- package/test/contracts/out/GovernorSettings.sol/GovernorSettings.json +1 -0
- package/test/contracts/out/GovernorTimelockCompound.sol/GovernorTimelockCompound.json +1 -0
- package/test/contracts/out/GovernorTimelockCompoundMock.sol/GovernorTimelockCompoundMock.json +1 -0
- package/test/contracts/out/GovernorTimelockControl.sol/GovernorTimelockControl.json +1 -0
- package/test/contracts/out/GovernorTimelockControlMock.sol/GovernorTimelockControlMock.json +1 -0
- package/test/contracts/out/GovernorVoteMock.sol/GovernorVoteMocks.json +1 -0
- package/test/contracts/out/GovernorVotes.sol/GovernorVotes.json +1 -0
- package/test/contracts/out/GovernorVotesComp.sol/GovernorVotesComp.json +1 -0
- package/test/contracts/out/GovernorVotesQuorumFraction.sol/GovernorVotesQuorumFraction.json +1 -0
- package/test/contracts/out/GovernorWithParamsMock.sol/GovernorWithParamsMock.json +1 -0
- package/test/contracts/out/IAMB.sol/IAMB.json +1 -0
- package/test/contracts/out/IAccessControl.sol/IAccessControl.json +1 -0
- package/test/contracts/out/IAccessControlDefaultAdminRules.sol/IAccessControlDefaultAdminRules.json +1 -0
- package/test/contracts/out/IAccessControlEnumerable.sol/IAccessControlEnumerable.json +1 -0
- package/test/contracts/out/IArbSys.sol/IArbSys.json +1 -0
- package/test/contracts/out/IBeacon.sol/IBeacon.json +1 -0
- package/test/contracts/out/IBridge.sol/IBridge.json +1 -0
- package/test/contracts/out/ICompoundTimelock.sol/ICompoundTimelock.json +1 -0
- package/test/contracts/out/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +1 -0
- package/test/contracts/out/IDelayedMessageProvider.sol/IDelayedMessageProvider.json +1 -0
- package/test/contracts/out/IERC1155.sol/IERC1155.json +1 -0
- package/test/contracts/out/IERC1155MetadataURI.sol/IERC1155MetadataURI.json +1 -0
- package/test/contracts/out/IERC1155Receiver.sol/IERC1155Receiver.json +1 -0
- package/test/contracts/out/IERC1271.sol/IERC1271.json +1 -0
- package/test/contracts/out/IERC1363.sol/IERC1363.json +1 -0
- package/test/contracts/out/IERC1363Receiver.sol/IERC1363Receiver.json +1 -0
- package/test/contracts/out/IERC1363Spender.sol/IERC1363Spender.json +1 -0
- package/test/contracts/out/IERC165.sol/IERC165.json +1 -0
- package/test/contracts/out/IERC1820Implementer.sol/IERC1820Implementer.json +1 -0
- package/test/contracts/out/IERC1820Registry.sol/IERC1820Registry.json +1 -0
- package/test/contracts/out/IERC1967.sol/IERC1967.json +1 -0
- package/test/contracts/out/IERC20.sol/IERC20.json +1 -0
- package/test/contracts/out/IERC20Metadata.sol/IERC20Metadata.json +1 -0
- package/test/contracts/out/IERC20Permit.sol/IERC20Permit.json +1 -0
- package/test/contracts/out/IERC2309.sol/IERC2309.json +1 -0
- package/test/contracts/out/IERC2612.sol/IERC2612.json +1 -0
- package/test/contracts/out/IERC2981.sol/IERC2981.json +1 -0
- package/test/contracts/out/IERC3156FlashBorrower.sol/IERC3156FlashBorrower.json +1 -0
- package/test/contracts/out/IERC3156FlashLender.sol/IERC3156FlashLender.json +1 -0
- package/test/contracts/out/IERC4626.sol/IERC4626.json +1 -0
- package/test/contracts/out/IERC4906.sol/IERC4906.json +1 -0
- package/test/contracts/out/IERC5267.sol/IERC5267.json +1 -0
- package/test/contracts/out/IERC5313.sol/IERC5313.json +1 -0
- package/test/contracts/out/IERC5805.sol/IERC5805.json +1 -0
- package/test/contracts/out/IERC6372.sol/IERC6372.json +1 -0
- package/test/contracts/out/IERC721.sol/IERC721.json +1 -0
- package/test/contracts/out/IERC721.sol/IERC721Enumerable.json +1 -0
- package/test/contracts/out/IERC721.sol/IERC721Metadata.json +1 -0
- package/test/contracts/out/IERC721.sol/IERC721TokenReceiver.json +1 -0
- package/test/contracts/out/IERC721Enumerable.sol/IERC721Enumerable.json +1 -0
- package/test/contracts/out/IERC721Metadata.sol/IERC721Metadata.json +1 -0
- package/test/contracts/out/IERC721Receiver.sol/IERC721Receiver.json +1 -0
- package/test/contracts/out/IERC777.sol/IERC777.json +1 -0
- package/test/contracts/out/IERC777Recipient.sol/IERC777Recipient.json +1 -0
- package/test/contracts/out/IERC777Sender.sol/IERC777Sender.json +1 -0
- package/test/contracts/out/IFxMessageProcessor.sol/IFxMessageProcessor.json +1 -0
- package/test/contracts/out/IGovernor.sol/IGovernor.json +1 -0
- package/test/contracts/out/IGovernorCompatibilityBravo.sol/IGovernorCompatibilityBravo.json +1 -0
- package/test/contracts/out/IGovernorTimelock.sol/IGovernorTimelock.json +1 -0
- package/test/contracts/out/IInbox.sol/IInbox.json +1 -0
- package/test/contracts/out/IMulticall3.sol/IMulticall3.json +1 -0
- package/test/contracts/out/IOutbox.sol/IOutbox.json +1 -0
- package/test/contracts/out/IVotes.sol/IVotes.json +1 -0
- package/test/contracts/out/Initializable.sol/Initializable.json +1 -0
- package/test/contracts/out/InitializableMock.sol/ChildConstructorInitializableMock.json +1 -0
- package/test/contracts/out/InitializableMock.sol/ConstructorInitializableMock.json +1 -0
- package/test/contracts/out/InitializableMock.sol/DisableBad1.json +1 -0
- package/test/contracts/out/InitializableMock.sol/DisableBad2.json +1 -0
- package/test/contracts/out/InitializableMock.sol/DisableNew.json +1 -0
- package/test/contracts/out/InitializableMock.sol/DisableOk.json +1 -0
- package/test/contracts/out/InitializableMock.sol/DisableOld.json +1 -0
- package/test/contracts/out/InitializableMock.sol/InitializableMock.json +1 -0
- package/test/contracts/out/InitializableMock.sol/ReinitializerMock.json +1 -0
- package/test/contracts/out/LibAMB.sol/LibAMB.json +1 -0
- package/test/contracts/out/LibArbitrumL1.sol/LibArbitrumL1.json +1 -0
- package/test/contracts/out/LibArbitrumL2.sol/LibArbitrumL2.json +1 -0
- package/test/contracts/out/LibOptimism.sol/LibOptimism.json +1 -0
- package/test/contracts/out/Math.sol/Math.json +1 -0
- package/test/contracts/out/Math.t.sol/MathTest.json +1 -0
- package/test/contracts/out/MerkleProof.sol/MerkleProof.json +1 -0
- package/test/contracts/out/MinimalForwarder.sol/MinimalForwarder.json +1 -0
- package/test/contracts/out/MockMiladyAgentRegistry.sol/MockMiladyAgentRegistry.json +1 -0
- package/test/contracts/out/MockMiladyCollection.sol/MockMiladyCollection.json +1 -0
- package/test/contracts/out/Multicall.sol/Multicall.json +1 -0
- package/test/contracts/out/MulticallTest.sol/MulticallTest.json +1 -0
- package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleChild.json +1 -0
- package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleFather.json +1 -0
- package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleGramps.json +1 -0
- package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleHuman.json +1 -0
- package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleMother.json +1 -0
- package/test/contracts/out/MyGovernor.sol/MyGovernor.json +1 -0
- package/test/contracts/out/MyGovernor1.sol/MyGovernor1.json +1 -0
- package/test/contracts/out/MyGovernor2.sol/MyGovernor2.json +1 -0
- package/test/contracts/out/MyGovernor3.sol/MyGovernor3.json +1 -0
- package/test/contracts/out/MyToken.sol/MyToken.json +1 -0
- package/test/contracts/out/MyTokenTimestampBased.sol/MyTokenTimestampBased.json +1 -0
- package/test/contracts/out/MyTokenWrapped.sol/MyTokenWrapped.json +1 -0
- package/test/contracts/out/Ownable.sol/Ownable.json +1 -0
- package/test/contracts/out/Ownable2Step.sol/Ownable2Step.json +1 -0
- package/test/contracts/out/Pausable.sol/Pausable.json +1 -0
- package/test/contracts/out/PausableMock.sol/PausableMock.json +1 -0
- package/test/contracts/out/PaymentSplitter.sol/PaymentSplitter.json +1 -0
- package/test/contracts/out/Proxy.sol/Proxy.json +1 -0
- package/test/contracts/out/ProxyAdmin.sol/ProxyAdmin.json +1 -0
- package/test/contracts/out/PullPayment.sol/PullPayment.json +1 -0
- package/test/contracts/out/PullPaymentMock.sol/PullPaymentMock.json +1 -0
- package/test/contracts/out/ReentrancyAttack.sol/ReentrancyAttack.json +1 -0
- package/test/contracts/out/ReentrancyGuard.sol/ReentrancyGuard.json +1 -0
- package/test/contracts/out/ReentrancyMock.sol/ReentrancyMock.json +1 -0
- package/test/contracts/out/RefundEscrow.sol/RefundEscrow.json +1 -0
- package/test/contracts/out/RegressionImplementation.sol/Implementation1.json +1 -0
- package/test/contracts/out/RegressionImplementation.sol/Implementation2.json +1 -0
- package/test/contracts/out/RegressionImplementation.sol/Implementation3.json +1 -0
- package/test/contracts/out/RegressionImplementation.sol/Implementation4.json +1 -0
- package/test/contracts/out/SafeCast.sol/SafeCast.json +1 -0
- package/test/contracts/out/SafeERC20.sol/SafeERC20.json +1 -0
- package/test/contracts/out/SafeMath.sol/SafeMath.json +1 -0
- package/test/contracts/out/SafeMathMemoryCheck.sol/SafeMathMemoryCheck.json +1 -0
- package/test/contracts/out/Script.sol/Script.json +1 -0
- package/test/contracts/out/ShortStrings.sol/ShortStrings.json +1 -0
- package/test/contracts/out/ShortStrings.t.sol/ShortStringsTest.json +1 -0
- package/test/contracts/out/SignatureChecker.sol/SignatureChecker.json +1 -0
- package/test/contracts/out/SignedMath.sol/SignedMath.json +1 -0
- package/test/contracts/out/SignedSafeMath.sol/SignedSafeMath.json +1 -0
- package/test/contracts/out/SingleInheritanceInitializableMocks.sol/MigratableMockV1.json +1 -0
- package/test/contracts/out/SingleInheritanceInitializableMocks.sol/MigratableMockV2.json +1 -0
- package/test/contracts/out/SingleInheritanceInitializableMocks.sol/MigratableMockV3.json +1 -0
- package/test/contracts/out/StdAssertions.sol/StdAssertions.json +1 -0
- package/test/contracts/out/StdAssertions.t.sol/StdAssertionsTest.json +1 -0
- package/test/contracts/out/StdAssertions.t.sol/TestMockCall.json +1 -0
- package/test/contracts/out/StdAssertions.t.sol/TestTest.json +1 -0
- package/test/contracts/out/StdChains.sol/StdChains.json +1 -0
- package/test/contracts/out/StdChains.t.sol/StdChainsTest.json +1 -0
- package/test/contracts/out/StdCheats.sol/StdCheats.json +1 -0
- package/test/contracts/out/StdCheats.sol/StdCheatsSafe.json +1 -0
- package/test/contracts/out/StdCheats.t.sol/Bar.json +1 -0
- package/test/contracts/out/StdCheats.t.sol/BarERC1155.json +1 -0
- package/test/contracts/out/StdCheats.t.sol/BarERC721.json +1 -0
- package/test/contracts/out/StdCheats.t.sol/RevertingContract.json +1 -0
- package/test/contracts/out/StdCheats.t.sol/StdCheatsTest.json +1 -0
- package/test/contracts/out/StdError.sol/stdError.json +1 -0
- package/test/contracts/out/StdError.t.sol/ErrorsTest.json +1 -0
- package/test/contracts/out/StdError.t.sol/StdErrorsTest.json +1 -0
- package/test/contracts/out/StdInvariant.sol/StdInvariant.json +1 -0
- package/test/contracts/out/StdJson.sol/stdJson.json +1 -0
- package/test/contracts/out/StdMath.sol/stdMath.json +1 -0
- package/test/contracts/out/StdMath.t.sol/StdMathTest.json +1 -0
- package/test/contracts/out/StdStorage.sol/stdStorage.json +1 -0
- package/test/contracts/out/StdStorage.sol/stdStorageSafe.json +1 -0
- package/test/contracts/out/StdStorage.t.sol/StdStorageTest.json +1 -0
- package/test/contracts/out/StdStorage.t.sol/StorageTest.json +1 -0
- package/test/contracts/out/StdStyle.sol/StdStyle.json +1 -0
- package/test/contracts/out/StdStyle.t.sol/StdStyleTest.json +1 -0
- package/test/contracts/out/StdUtils.sol/StdUtils.json +1 -0
- package/test/contracts/out/StdUtils.t.sol/StdUtilsForkTest.json +1 -0
- package/test/contracts/out/StdUtils.t.sol/StdUtilsMock.json +1 -0
- package/test/contracts/out/StdUtils.t.sol/StdUtilsTest.json +1 -0
- package/test/contracts/out/StorageSlot.sol/StorageSlot.json +1 -0
- package/test/contracts/out/StorageSlotMock.sol/StorageSlotMock.json +1 -0
- package/test/contracts/out/Strings.sol/Strings.json +1 -0
- package/test/contracts/out/TimelockController.sol/TimelockController.json +1 -0
- package/test/contracts/out/TimelockReentrant.sol/TimelockReentrant.json +1 -0
- package/test/contracts/out/Timers.sol/Timers.json +1 -0
- package/test/contracts/out/TimersBlockNumberImpl.sol/TimersBlockNumberImpl.json +1 -0
- package/test/contracts/out/TimersTimestampImpl.sol/TimersTimestampImpl.json +1 -0
- package/test/contracts/out/TokenTimelock.sol/TokenTimelock.json +1 -0
- package/test/contracts/out/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +1 -0
- package/test/contracts/out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +1 -0
- package/test/contracts/out/UUPSLegacy.sol/UUPSUpgradeableLegacyMock.json +1 -0
- package/test/contracts/out/UUPSUpgradeable.sol/UUPSUpgradeable.json +1 -0
- package/test/contracts/out/UUPSUpgradeableMock.sol/NonUpgradeableMock.json +1 -0
- package/test/contracts/out/UUPSUpgradeableMock.sol/UUPSUpgradeableMock.json +1 -0
- package/test/contracts/out/UUPSUpgradeableMock.sol/UUPSUpgradeableUnsafeMock.json +1 -0
- package/test/contracts/out/UpgradeableBeacon.sol/UpgradeableBeacon.json +1 -0
- package/test/contracts/out/VestingWallet.sol/VestingWallet.json +1 -0
- package/test/contracts/out/Vm.sol/Vm.json +1 -0
- package/test/contracts/out/Vm.sol/VmSafe.json +1 -0
- package/test/contracts/out/Votes.sol/Votes.json +1 -0
- package/test/contracts/out/VotesMock.sol/VotesMock.json +1 -0
- package/test/contracts/out/VotesMock.sol/VotesTimestampMock.json +1 -0
- package/test/contracts/out/VotesTimestamp.sol/ERC20VotesCompTimestampMock.json +1 -0
- package/test/contracts/out/VotesTimestamp.sol/ERC20VotesTimestampMock.json +1 -0
- package/test/contracts/out/VotesTimestamp.sol/ERC721VotesTimestampMock.json +1 -0
- package/test/contracts/out/bridges.sol/BaseRelayMock.json +1 -0
- package/test/contracts/out/bridges.sol/BridgeAMBMock.json +1 -0
- package/test/contracts/out/bridges.sol/BridgeArbitrumL1Inbox.json +1 -0
- package/test/contracts/out/bridges.sol/BridgeArbitrumL1Mock.json +1 -0
- package/test/contracts/out/bridges.sol/BridgeArbitrumL1Outbox.json +1 -0
- package/test/contracts/out/bridges.sol/BridgeArbitrumL2Mock.json +1 -0
- package/test/contracts/out/bridges.sol/BridgeOptimismMock.json +1 -0
- package/test/contracts/out/bridges.sol/BridgePolygonChildMock.json +1 -0
- package/test/contracts/out/build-info/2be03bb8eb1ccda1.json +1 -0
- package/test/contracts/out/console.sol/console.json +1 -0
- package/test/contracts/out/console2.sol/console2.json +1 -0
- package/test/contracts/out/demo.sol/DemoTest.json +1 -0
- package/test/contracts/out/demo.sol/DemoTestWithSetUp.json +1 -0
- package/test/contracts/out/draft-IERC1822.sol/IERC1822Proxiable.json +1 -0
- package/test/contracts/out/interfaces/IERC1155.sol/IERC1155.json +1 -0
- package/test/contracts/out/interfaces/IERC165.sol/IERC165.json +1 -0
- package/test/contracts/out/interfaces/IERC20.sol/IERC20.json +1 -0
- package/test/contracts/out/interfaces/IERC4626.sol/IERC4626.json +1 -0
- package/test/contracts/out/interfaces/IERC721.sol/IERC721.json +1 -0
- package/test/contracts/out/receivers.sol/CrossChainEnabledAMBMock.json +1 -0
- package/test/contracts/out/receivers.sol/CrossChainEnabledArbitrumL1Mock.json +1 -0
- package/test/contracts/out/receivers.sol/CrossChainEnabledArbitrumL2Mock.json +1 -0
- package/test/contracts/out/receivers.sol/CrossChainEnabledOptimismMock.json +1 -0
- package/test/contracts/out/receivers.sol/CrossChainEnabledPolygonChildMock.json +1 -0
- package/test/contracts/out/receivers.sol/Receiver.json +1 -0
- package/test/contracts/out/test.sol/DSTest.json +1 -0
- package/test/contracts/out/test.sol/Test.json +1 -0
- package/test/contracts/out/test.t.sol/DemoTest.json +1 -0
- package/test/database-api.e2e.test.ts +666 -0
- package/test/debug-anvil.ts +44 -0
- package/test/deferred-restart.e2e.test.ts +368 -0
- package/test/discord-connector.e2e.test.ts +463 -0
- package/test/e2e-global-setup.ts +29 -0
- package/test/e2e-validation.e2e.test.ts +1588 -0
- package/test/health-endpoint.e2e.test.ts +95 -0
- package/test/knowledge-e2e-flow.e2e.test.ts +134 -0
- package/test/knowledge-live.e2e.test.ts +405 -0
- package/test/mcp-config.e2e.test.ts +630 -0
- package/test/native-modules.e2e.test.ts +470 -0
- package/test/permissions-api.e2e.test.ts +637 -0
- package/test/plugin-install.e2e.test.ts +645 -0
- package/test/plugin-lifecycle.e2e.test.ts +617 -0
- package/test/plugin-management.e2e.test.ts +308 -0
- package/test/provider-switch.e2e.test.ts +322 -0
- package/test/scripts/test-force.ts +139 -0
- package/test/scripts/test-parallel.mjs +192 -0
- package/test/scripts/validate-all-features.sh +557 -0
- package/test/setup.ts +122 -0
- package/test/signal-connector.e2e.test.ts +229 -0
- package/test/skills-marketplace-api.e2e.test.ts +585 -0
- package/test/skills-marketplace-services.e2e.test.ts +518 -0
- package/test/skills-marketplace.e2e.test.ts +268 -0
- package/test/stubs/coding-agent-module.ts +18 -0
- package/test/stubs/electron-module.ts +17 -0
- package/test/stubs/empty-module.mjs +4 -0
- package/test/stubs/pi-ai-module.ts +12 -0
- package/test/subscription-auth.e2e.test.ts +747 -0
- package/test/terminal-execution.e2e.test.ts +134 -0
- package/test/terminal-run-limits.e2e.test.ts +132 -0
- package/test/test-env.ts +156 -0
- package/test/trajectory-collection.e2e.test.ts +800 -0
- package/test/trajectory-database.e2e.test.ts +209 -0
- package/test/trajectory-embedding-filter.e2e.test.ts +317 -0
- package/test/trajectory-restart-carryover.e2e.test.ts +306 -0
- package/test/trigger-execution-flow.e2e.test.ts +132 -0
- package/test/trigger-runtime.e2e.test.ts +247 -0
- package/test/wallet-api.e2e.test.ts +1295 -0
- package/test/wallet-live.e2e.test.ts +428 -0
- package/vitest.e2e.config.ts +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_deposit_redeem","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_deposit_withdraw","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_mint_redeem","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_mint_withdraw","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_redeem_deposit","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_redeem_mint","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_withdraw_deposit","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_RT_withdraw_mint","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_asset","inputs":[{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_convertToAssets","inputs":[{"name":"caller1","type":"address","internalType":"address"},{"name":"caller2","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_convertToShares","inputs":[{"name":"caller1","type":"address","internalType":"address"},{"name":"caller2","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_deposit","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_maxDeposit","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_maxMint","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_maxRedeem","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_maxWithdraw","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_mint","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_previewDeposit","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"other","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_previewMint","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"other","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_previewRedeem","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"},{"name":"other","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_previewWithdraw","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"},{"name":"other","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_redeem","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_totalAssets","inputs":[{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prop_withdraw","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpVault","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpYield","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFail_redeem","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFail_withdraw","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzzDecimalsOverflow","inputs":[{"name":"offset","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_deposit_redeem","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_deposit_withdraw","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_mint_redeem","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_mint_withdraw","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_redeem_deposit","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_redeem_mint","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_withdraw_deposit","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RT_withdraw_mint","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_asset","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_convertToAssets","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_convertToShares","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deposit","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"allowance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_maxDeposit","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_maxMint","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_maxRedeem","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_maxWithdraw","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_mint","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"allowance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_previewDeposit","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_previewMint","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_previewRedeem","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_previewWithdraw","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_redeem","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"allowance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_totalAssets","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_withdraw","inputs":[{"name":"init","type":"tuple","internalType":"struct ERC4626Test.Init","components":[{"name":"user","type":"address[4]","internalType":"address[4]"},{"name":"share","type":"uint256[4]","internalType":"uint256[4]"},{"name":"asset","type":"uint256[4]","internalType":"uint256[4]"},{"name":"yield","type":"int256","internalType":"int256"}]},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"allowance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060408190525f8054600160ff1991821681179092556004805490911690911790556200002d906200007b565b604051809103905ff08015801562000047573d5f803e3d5ffd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905534801562000074575f80fd5b5062000089565b610c6980620098c283390190565b61982b80620000975f395ff3fe608060405234801562000010575f80fd5b506004361062000410575f3560e01c80638a764bc8116200021f578063bf791746116200012b578063dbfa826511620000b7578063f7ab8c841162000083578063f7ab8c84146200093f578063fa7626d41462000956578063fa91c87c1462000963578063fbdc4189146200097a575f80fd5b8063dbfa826514620008f0578063dea9d64e1462000907578063e20c9f71146200091e578063ec5ccdbe1462000928575f80fd5b8063c5aea78011620000f7578063c5aea7801462000894578063c5b13cad14620008ab578063ccb139a914620008c2578063cdbecf7b14620008d9575f80fd5b8063bf7917461462000838578063bfa30a7c146200084f578063bfc2b3a01462000866578063c168a242146200087d575f80fd5b8063a6f9297011620001ab578063b6f9c1b71162000177578063b6f9c1b714620007d8578063b7b0f35814620007ef578063b9e719981462000806578063ba414fa6146200081d575f80fd5b8063a6f929701462000789578063ab23e76b14620007a0578063b152b6d414620007b7578063b5508aa914620007ce575f80fd5b806395f1481b11620001eb57806395f1481b146200072d578063999f8a2d14620007445780639da01e21146200075b578063a21f731f1462000772575f80fd5b80638a764bc814620006de5780638d02a8cb14620006f55780638edbf2ca146200070c578063916a17c61462000723575f80fd5b80634c216f35116200031f57806366d9a9a011620002ab5780637c13996811620002775780637c1399681462000680578063840f3a74146200069757806385226c8114620006ae57806389bf68d614620006c7575f80fd5b806366d9a9a014620006225780636aaa88bc146200063b578063730b01ff146200065257806378a72e861462000669575f80fd5b80635900f73411620002eb5780635900f73414620005c65780635974db9314620005dd5780635f33763c14620005f457806366baecaf146200060b575f80fd5b80634c216f35146200056a5780634e2a578d14620005815780634f4b85491462000598578063583a33e814620005af575f80fd5b80631ed7831c116200039f5780633e5e3c23116200036b5780633e5e3c2314620005285780633f7286f414620005325780633fbc89c5146200053c57806345a608191462000553575f80fd5b80631ed7831c14620004c15780632797118b14620004e357806337bad15514620004fa578063399785c21462000511575f80fd5b80630a9254e411620003df5780630a9254e41462000472578063125cc288146200047c5780631ac95e7114620004935780631b6b03c214620004aa575f80fd5b8063029122a6146200041457806303ecaa63146200042d57806308052de114620004445780630a2a2378146200045b575b5f80fd5b6200042b6200042536600462005b5b565b62000991565b005b6200042b6200043e36600462005b88565b62000b84565b6200042b6200045536600462005cfb565b62000c5d565b6200042b6200046c36600462005d19565b62000c7a565b6200042b62000e8c565b6200042b6200048d36600462005d47565b62000f24565b6200042b620004a436600462005d7e565b62000f7d565b6200042b620004bb36600462005cfb565b6200107c565b620004cb6200109d565b604051620004da919062005de7565b60405180910390f35b6200042b620004f436600462005b5b565b620010ff565b6200042b6200050b36600462005d19565b620012ec565b6200042b6200052236600462005b88565b6200133c565b620004cb620013d3565b620004cb62001433565b6200042b6200054d36600462005d19565b62001493565b6200042b6200056436600462005e35565b620014e3565b6200042b6200057b36600462005d19565b620015db565b6200042b6200059236600462005cfb565b6200163c565b6200042b620005a936600462005b5b565b6200165d565b6200042b620005c036600462005e35565b62001839565b6200042b620005d736600462005d19565b62001c3b565b6200042b620005ee36600462005b88565b62001e2f565b6200042b6200060536600462005cfb565b62001ec6565b6200042b6200061c36600462005cfb565b6200229a565b6200062c62002420565b604051620004da919062005e78565b6200042b6200064c36600462005d19565b6200250e565b6200042b6200066336600462005d19565b6200255e565b6200042b6200067a36600462005e35565b620025ae565b6200042b6200069136600462005d47565b62002691565b6200042b620006a836600462005d19565b620026ea565b620006b86200273a565b604051620004da919062005f7e565b6200042b620006d836600462005d19565b6200280f565b6200042b620006ef36600462005d7e565b62002870565b6200042b6200070636600462005cfb565b62002966565b6200042b6200071d36600462005cfb565b62002987565b6200062c620029a0565b6200042b6200073e36600462005fe2565b62002a85565b6200042b6200075536600462005b5b565b62002b60565b6200042b6200076c36600462005b5b565b62002d4d565b6200042b6200078336600462005d19565b62002f3a565b6200042b6200079a36600462005d19565b62002f9b565b6200042b620007b136600462005b5b565b62002feb565b6200042b620007c836600462006000565b620031c7565b620006b8620032bc565b6200042b620007e936600462005b88565b62003391565b6200042b6200080036600462005b5b565b62003428565b6200042b6200081736600462005d19565b62003604565b6200082762003665565b6040519015158152602001620004da565b6200042b6200084936600462005fe2565b62003786565b6200042b6200086036600462005d47565b62003861565b6200042b6200087736600462005d19565b620038b8565b6200042b6200088e36600462005d47565b62003908565b6200042b620008a536600462006000565b6200395f565b6200042b620008bc36600462005d19565b62003d66565b6200042b620008d336600462006064565b62003d88565b6200042b620008ea36600462006000565b62003eb8565b6200042b6200090136600462005d19565b620042b1565b6200042b6200091836600462005cfb565b620042d3565b620004cb620042f4565b6200042b6200093936600462006000565b62004354565b6200042b6200095036600462005b5b565b62004449565b5f54620008279060ff1681565b6200042b6200097436600462005e35565b62004625565b6200042b6200098b36600462005d19565b620049a2565b601d54600160a01b900460ff1662000a87575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a14573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a3a919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562000a6f575f80fd5b505afa15801562000a82573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000ad4575f80fd5b505af115801562000ae7573d5f803e3d5ffd5b505050505f62000af88284620049f2565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000b48575f80fd5b505af115801562000b5b573d5f803e3d5ffd5b505050505f62000b6d82858662004a60565b905062000b7e8184601b5462004aa4565b50505050565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000bd1575f80fd5b505af115801562000be4573d5f803e3d5ffd5b5050601d5460405163402d267d60e01b81526001600160a01b038581166004830152909116925063402d267d91506024015b602060405180830381865afa15801562000c32573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c58919062006082565b505050565b62000c688162001ec6565b80515162000c768162003786565b5050565b62000c858262001ec6565b81518051602082015160409092015190919062000cae845f62000ca88462004c3a565b62004ccf565b604051632631f2b160e11b81526001600160a01b03838116908616141560048201529094505f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562000d03575f80fd5b505afa15801562000d16573d5f803e3d5ffd5b5050604051632631f2b160e11b815286151560048201525f80516020620097968339815191529250634c63e56291506024015f6040518083038186803b15801562000d5f575f80fd5b505afa15801562000d72573d5f803e3d5ffd5b5050601d5462000d9192506001600160a01b0316905082855f62004d0f565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000dde575f80fd5b505af115801562000df1573d5f803e3d5ffd5b5050601d54604051632d182be560e21b8152600481018890526001600160a01b03868116602483015285811660448301525f9450909116915063b460af94906064016020604051808303815f875af115801562000e50573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000e76919062006082565b905062000e84815f62004df1565b505050505050565b601e54601c80546001600160a01b0319166001600160a01b03909216918217905560405162000ebb9062005b2a565b6001600160a01b039091168152602001604051809103905ff08015801562000ee5573d5f803e3d5ffd5b50601d80545f601b5560ff60a81b196001600160a81b03199091166001600160a01b039390931692909217600160a01b1791909116600160a81b179055565b62000f2f8362001ec6565b82518051602082015160409092015190919062000f52855f62000ca88462004c3a565b601d5490955062000f6f906001600160a01b031682858762004d0f565b62000e848383838862003eb8565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000fca575f80fd5b505af115801562000fdd573d5f803e3d5ffd5b505050505f62000fed8262004ee8565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b1580156200103d575f80fd5b505af115801562001050573d5f803e3d5ffd5b505050505f6200106283878762004a60565b9050620010738183601b5462004f09565b50505050505050565b620010878162001ec6565b8051805160209091015162000c58828262000b84565b6060600d805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311620010d6575b5050505050905090565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b1580156200114c575f80fd5b505af11580156200115f573d5f803e3d5ffd5b505050505f6200117182848562004f84565b601d54909150600160a01b900460ff166200126a575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200121d919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562001252575f80fd5b505afa15801562001265573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620012b7575f80fd5b505af1158015620012ca573d5f803e3d5ffd5b505050505f620012db828562004fbe565b905062000b7e8184601b5462004f09565b620012f78262001ec6565b8151516200130b825f62000ca88462004ff0565b601c54601d5491935062001330916001600160a01b03918216918491165f1962004d0f565b62000c58818362003428565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001389575f80fd5b505af11580156200139c573d5f803e3d5ffd5b5050601d5460405163ce96cb7760e01b81526001600160a01b038581166004830152909116925063ce96cb77915060240162000c16565b6060600f805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620010d6575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620010d6575050505050905090565b6200149e8262001ec6565b815151620014b2825f62000ca8846200507d565b601c54601d54919350620014d7916001600160a01b03918216918491165f1962004d0f565b62000c5881836200165d565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001530575f80fd5b505af115801562001543573d5f803e3d5ffd5b505050505f620015538262005112565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620015a3575f80fd5b505af1158015620015b6573d5f803e3d5ffd5b505050505f620015c68362005112565b9050620015d4828262005133565b5050505050565b620015e68262001ec6565b81518051602082015160409092015190919062001609845f62000ca88662005220565b601c54601d549195506200162e916001600160a01b03918216918691165f1962004d0f565b620015d48383838762004354565b620016478162001ec6565b8051805160209091015162000c5882826200133c565b601d54600160a01b900460ff1662001753575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001706919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200173b575f80fd5b505afa1580156200174e573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620017a0575f80fd5b505af1158015620017b3573d5f803e3d5ffd5b505050505f620017c4828462004fbe565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001814575f80fd5b505af115801562001827573d5f803e3d5ffd5b505050505f620012db82858662004f84565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa15801562001882573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620018a8919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620018f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200191c919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e926200195a928b9290911690600401620060ae565b602060405180830381865afa15801562001976573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200199c919062006082565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620019ec575f80fd5b505af1158015620019ff573d5f803e3d5ffd5b505050505f62001a10858762004fbe565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562001a5e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a84919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562001ad2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001af8919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e9262001b36928f9290911690600401620060ae565b602060405180830381865afa15801562001b52573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b78919062006082565b905062001bb28362001b8b868a620060dc565b601b5460405180604001604052806005815260200164185cdcd95d60da1b81525062005270565b62001bea8262001bc38a89620060f2565b601b5460405180604001604052806005815260200164736861726560d81b81525062005270565b5f19851462001c2f5762001c2f8162001c048688620060dc565b601b5460405180604001604052806009815260200168616c6c6f77616e636560b81b81525062005270565b50505050505050505050565b62001c468262001ec6565b81518051602082015160409092015190919062001c69845f62000ca88462004ff0565b604051632631f2b160e11b81526001600160a01b03838116908616141560048201529094505f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562001cbe575f80fd5b505afa15801562001cd1573d5f803e3d5ffd5b5050604051632631f2b160e11b815286151560048201525f80516020620097968339815191529250634c63e56291506024015f6040518083038186803b15801562001d1a575f80fd5b505afa15801562001d2d573d5f803e3d5ffd5b5050601d5462001d4c92506001600160a01b0316905082855f62004d0f565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001d99575f80fd5b505af115801562001dac573d5f803e3d5ffd5b5050601d54604051635d043b2960e11b8152600481018890526001600160a01b0386811660248301528581166044830152909116925063ba08765291506064016020604051808303815f875af115801562001e09573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000e84919062006082565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001e7c575f80fd5b505af115801562001e8f573d5f803e3d5ffd5b5050601d5460405163631ebadb60e11b81526001600160a01b038581166004830152909116925063c63d75b6915060240162000c16565b5f5b60048110156200228b5781515f90826004811062001eea5762001eea6200609a565b6020020151604051632631f2b160e11b81526001600160a01b0382163b1560048201529091505f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562001f40575f80fd5b505afa15801562001f53573d5f803e3d5ffd5b505050505f8360200151836004811062001f715762001f716200609a565b6020020151601c546040516340c10f1960e01b81526001600160a01b038581166004830152602482018490529293509116906340c10f19906044015f604051808303815f87803b15801562001fc4575f80fd5b505af192505050801562001fd6575060015b6200203657604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b1580156200201e575f80fd5b505afa15801562002031573d5f803e3d5ffd5b505050505b601c54601d5462002057916001600160a01b03908116918591168462004d0f565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620020a4575f80fd5b505af1158015620020b7573d5f803e3d5ffd5b5050601d54604051636e553f6560e01b8152600481018590526001600160a01b0386811660248301529091169250636e553f6591506044016020604051808303815f875af19250505080156200212c575060408051601f3d908101601f19168201909252620021299181019062006082565b60015b6200219157604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562002174575f80fd5b505afa15801562002187573d5f803e3d5ffd5b5050505062002193565b505b5f84604001518460048110620021ad57620021ad6200609a565b6020020151601c546040516340c10f1960e01b81526001600160a01b038681166004830152602482018490529293509116906340c10f19906044015f604051808303815f87803b15801562002200575f80fd5b505af192505050801562002212575060015b6200227257604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b1580156200225a575f80fd5b505afa1580156200226d573d5f803e3d5ffd5b505050505b5050508080620022829062006108565b91505062001ec8565b5062002297816200229a565b50565b5f81606001511262002367576060810151601c54601d546040516340c10f1960e01b81526001600160a01b039182166004820152602481018490529116906340c10f19906044015b5f604051808303815f87803b158015620022fa575f80fd5b505af19250505080156200230c575060015b62000c7657604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562002354575f80fd5b505afa15801562000e84573d5f803e3d5ffd5b6060810151604051632631f2b160e11b8152600160ff1b9190911260048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b158015620023b7575f80fd5b505afa158015620023ca573d5f803e3d5ffd5b505050505f81606001515f19620023e2919062006123565b601c54601d54604051632770a7eb60e21b81526001600160a01b039182166004820152602481018490529293501690639dc29fac90604401620022e2565b60606012805480602002602001604051908101604052809291908181526020015f905b8282101562002505575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620024ec57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620024ad5790505b5050505050815250508152602001906001019062002443565b50505050905090565b620025198262001ec6565b8151516200252d825f62000ca88462004c3a565b601c54601d5491935062002552916001600160a01b03918216918491165f1962004d0f565b62000c588183620010ff565b620025698262001ec6565b8151516200257d825f62000ca88462005220565b601c54601d54919350620025a2916001600160a01b03918216918491165f1962004d0f565b62000c58818362000991565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620025fb575f80fd5b505af11580156200260e573d5f803e3d5ffd5b505050505f6200261e82620052ce565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b1580156200266e575f80fd5b505af115801562002681573d5f803e3d5ffd5b505050505f620015c683620052ce565b6200269c8362001ec6565b825180516020820151604090920151909190620026bf855f62000ca88462004ff0565b601d54909550620026dc906001600160a01b031682858762004d0f565b62000e84838383886200395f565b620026f58262001ec6565b81515162002709825f62000ca88462004ff0565b601c54601d549193506200272e916001600160a01b03918216918491165f1962004d0f565b62000c58818362004449565b60606011805480602002602001604051908101604052809291908181526020015f905b8282101562002505578382905f5260205f200180546200277d9062006158565b80601f0160208091040260200160405190810160405280929190818152602001828054620027ab9062006158565b8015620027fa5780601f10620027d057610100808354040283529160200191620027fa565b820191905f5260205f20905b815481529060010190602001808311620027dc57829003601f168201915b5050505050815260200190600101906200275d565b6200281a8262001ec6565b81518051602082015160408301516060909301519192909162002843855f62000ca88562004ff0565b601d5490955062002861906001600160a01b031683865f1962004d0f565b62000e84848484848962000f7d565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620028bd575f80fd5b505af1158015620028d0573d5f803e3d5ffd5b505050505f620028e082620052ef565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002930575f80fd5b505af115801562002943573d5f803e3d5ffd5b505050505f6200295583878762004f84565b9050620010738183601b5462004aa4565b620029718162001ec6565b8051805160209091015162000c58828262003391565b620029928162001ec6565b80515162000c768162002a85565b60606013805480602002602001604051908101604052809291908181526020015f905b8282101562002505575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002a6c57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002a2d5790505b50505050508152505081526020019060010190620029c3565b60405163ca669fa760e01b81526001600160a01b03821660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002ad2575f80fd5b505af115801562002ae5573d5f803e3d5ffd5b50505050601d5f9054906101000a90046001600160a01b03166001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b3a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c76919062006082565b601d54600160a01b900460ff1662002c56575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002be3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c09919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562002c3e575f80fd5b505afa15801562002c51573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002ca3575f80fd5b505af115801562002cb6573d5f803e3d5ffd5b505050505f62002cc7828462004fbe565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002d17575f80fd5b505af115801562002d2a573d5f803e3d5ffd5b505050505f62002d3c83858662004a60565b905062000b7e8183601b5462004aa4565b601d54600160a01b900460ff1662002e43575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002dd0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002df6919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562002e2b575f80fd5b505afa15801562002e3e573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002e90575f80fd5b505af115801562002ea3573d5f803e3d5ffd5b505050505f62002eb48284620049f2565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002f04575f80fd5b505af115801562002f17573d5f803e3d5ffd5b505050505f62002f2983858662004f84565b905062000b7e8183601b5462004f09565b62002f458262001ec6565b81518051602082015160409092015190919062002f68845f62000ca8866200507d565b601c54601d5491955062002f8d916001600160a01b03918216918691165f1962004d0f565b620015d483838387620031c7565b62002fa68262001ec6565b81515162002fba825f62000ca88462005220565b601c54601d5491935062002fdf916001600160a01b03918216918491165f1962004d0f565b62000c58818362002d4d565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003038575f80fd5b505af11580156200304b573d5f803e3d5ffd5b505050505f6200305d82848562004f84565b601d54909150600160a01b900460ff1662003156575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620030e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003109919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200313e575f80fd5b505afa15801562003151573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620031a3575f80fd5b505af1158015620031b6573d5f803e3d5ffd5b505050505f62002d3c8385620049f2565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003214575f80fd5b505af115801562003227573d5f803e3d5ffd5b505050505f620032378262005310565b60405163ca669fa760e01b81526001600160a01b03871660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003287575f80fd5b505af11580156200329a573d5f803e3d5ffd5b505050505f620032ab838662004fbe565b905062000e848183601b5462004aa4565b60606010805480602002602001604051908101604052809291908181526020015f905b8282101562002505578382905f5260205f20018054620032ff9062006158565b80601f01602080910402602001604051908101604052809291908181526020018280546200332d9062006158565b80156200337c5780601f1062003352576101008083540402835291602001916200337c565b820191905f5260205f20905b8154815290600101906020018083116200335e57829003601f168201915b505050505081526020019060010190620032df565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620033de575f80fd5b505af1158015620033f1573d5f803e3d5ffd5b5050601d54604051636c82bbbf60e11b81526001600160a01b038581166004830152909116925063d905777e915060240162000c16565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003475575f80fd5b505af115801562003488573d5f803e3d5ffd5b505050505f6200349a82848562004a60565b601d54909150600160a01b900460ff1662003593575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003520573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003546919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200357b575f80fd5b505afa1580156200358e573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620035e0575f80fd5b505af1158015620035f3573d5f803e3d5ffd5b505050505f62000b6d8285620049f2565b6200360f8262001ec6565b81518051602082015160408301516060909301519192909162003638855f62000ca88562004c3a565b601d5490955062003656906001600160a01b031683865f1962004d0f565b62000e84848484848962002870565b5f8054610100900460ff16156200368457505f54610100900460ff1690565b5f5f80516020620097968339815191523b156200378157604080515f8051602062009796833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093525f92909162003707917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006192565b60408051601f19818403018152908290526200372391620061c4565b5f604051808303815f865af19150503d805f81146200375e576040519150601f19603f3d011682016040523d82523d5f602084013e62003763565b606091505b50915050808060200190518101906200377d9190620061e1565b9150505b919050565b60405163ca669fa760e01b81526001600160a01b03821660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620037d3575f80fd5b505af1158015620037e6573d5f803e3d5ffd5b50505050601d5f9054906101000a90046001600160a01b03166001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200383b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c76919062006202565b6200386c8362001ec6565b8251805160209091015162003887845f62000ca8856200507d565b601c54601d54919550620038ab916001600160a01b03918216918591168662004d0f565b620015d482828662001839565b620038c38262001ec6565b815151620038d7825f62000ca8846200507d565b601c54601d54919350620038fc916001600160a01b03918216918491165f1962004d0f565b62000c58818362002b60565b620039138362001ec6565b825180516020909101516200392e845f62000ca88562005220565b601c54601d5491955062003952916001600160a01b03918216918591168662004d0f565b620015d482828662004625565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa158015620039a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620039ce919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003a1c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003a42919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e9062003a7b9088908b90600401620060ae565b602060405180830381865afa15801562003a97573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003abd919062006082565b60405163ca669fa760e01b81526001600160a01b03891660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003b0d575f80fd5b505af115801562003b20573d5f803e3d5ffd5b505050505f62003b3285888862004a60565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003b80573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003ba6919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003bf4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003c1a919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e9062003c53908c908f90600401620060ae565b602060405180830381865afa15801562003c6f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003c95919062006082565b905062003ca88262001bc38a89620060dc565b62003cb98362001b8b868a620060f2565b886001600160a01b03168b6001600160a01b03161415801562003cdd57505f198514155b1562003cf45762003cf48162001c048a88620060dc565b62003d59896001600160a01b03168c6001600160a01b0316148062003d1857508515155b8062003d2c57508815801562003d2c575084155b6040518060400160405280600e81526020016d1858d8d95cdcc818dbdb9d1c9bdb60921b81525062005331565b5050505050505050505050565b62003d718262001ec6565b8151805160209091015162000b7e828285620025ae565b62003d9c8160ff1660ee60ff801662004ccf565b601e546040519192505f916001600160a01b0390911690839062003dc09062005b38565b6001600160a01b03909216825260ff166020820152604001604051809103905ff08015801562003df2573d5f803e3d5ffd5b5090505f80516020620097b68339815191525f1c6001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003e3e575f80fd5b505af115801562003e51573d5f803e3d5ffd5b50505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003e92573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c58919062006220565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa15801562003f01573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003f27919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003f75573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003f9b919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e9062003fd49088908b90600401620060ae565b602060405180830381865afa15801562003ff0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004016919062006082565b60405163ca669fa760e01b81526001600160a01b03891660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004066575f80fd5b505af115801562004079573d5f803e3d5ffd5b505050505f6200408b85888862004f84565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620040d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620040ff919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156200414d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004173919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e90620041ac908c908f90600401620060ae565b602060405180830381865afa158015620041c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620041ee919062006082565b9050620042018262001bc38689620060dc565b620042128362001b8b8a8a620060f2565b886001600160a01b03168b6001600160a01b0316141580156200423657505f198514155b156200424d576200424d8162001c048688620060dc565b62003d59896001600160a01b03168c6001600160a01b031614806200427157508515155b8062003d2c57508415801562003d2c575088156040518060400160405280600e81526020016d1858d8d95cdcc818dbdb9d1c9bdb60921b81525062005331565b620042bc8262001ec6565b8151805160209091015162000b7e828285620014e3565b620042de8162001ec6565b8051805160209091015162000c58828262001e2f565b6060600c805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620010d6575050505050905090565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620043a1575f80fd5b505af1158015620043b4573d5f803e3d5ffd5b505050505f620043c4826200537b565b60405163ca669fa760e01b81526001600160a01b03871660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004414575f80fd5b505af115801562004427573d5f803e3d5ffd5b505050505f620044388386620049f2565b905062000e848183601b5462004f09565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004496575f80fd5b505af1158015620044a9573d5f803e3d5ffd5b505050505f620044bb82848562004a60565b601d54909150600160a01b900460ff16620045b4575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004541573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004567919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200459c575f80fd5b505afa158015620045af573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004601575f80fd5b505af115801562004614573d5f803e3d5ffd5b505050505f62002f29838562004fbe565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa1580156200466e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004694919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620046e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004708919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e9262004746928b9290911690600401620060ae565b602060405180830381865afa15801562004762573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004788919062006082565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620047d8575f80fd5b505af1158015620047eb573d5f803e3d5ffd5b505050505f620047fc8587620049f2565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156200484a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004870919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620048be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620048e4919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e9262004922928f9290911690600401620060ae565b602060405180830381865afa1580156200493e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004964919062006082565b9050620049778362001b8b8a8a620060dc565b620049888262001bc38689620060f2565b5f19851462001c2f5762001c2f8162001c048a88620060dc565b620049ad8262001ec6565b815151620049c1825f62000ca88462004c3a565b601c54601d54919350620049e6916001600160a01b03918216918491165f1962004d0f565b62000c58818362002feb565b604051602481018390526001600160a01b03821660448201525f9062004a5790636e553f6560e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200539c565b90505b92915050565b604051602481018490526001600160a01b038084166044830152821660648201525f9062004a9a90635d043b2960e11b9060840162004a1f565b90505b9392505050565b8183111562000c58575f62004aba8385620060dc565b90508181111562000b7e575f805160206200977683398151915260405162004b1f9060208082526023908201527f4572726f723a2061203c3d7e2062206e6f7420736174697366696564205b75696040820152626e745d60e81b606082015260800190565b60405180910390a160408051818152600a818301526920202056616c7565206160b01b60608201526020810186905290515f80516020620097d68339815191529181900360800190a160408051818152600a91810191909152691010102b30b63ab2903160b11b6060820152602081018490525f80516020620097d6833981519152906080015b60405180910390a160408051818152600a8183015269204d61782044656c746160b01b60608201526020810184905290515f80516020620097d68339815191529181900360800190a160408051818152600a8183015269202020202044656c746160b01b60608201526020810183905290515f80516020620097d68339815191529181900360800190a162000b7e6200548c565b601d545f90600160a81b900460ff161562004c5757505f19919050565b601d546040516370a0823160e01b81526001600160a01b03848116600483015262004a5a9216906370a0823190602401602060405180830381865afa15801562004ca3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004cc9919062006082565b62005112565b5f62004cdd8484846200558d565b905062004a9d6040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262005778565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004d5c575f80fd5b505af115801562004d6f573d5f803e3d5ffd5b5050505062004d8084835f62005814565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004dcd575f80fd5b505af115801562004de0573d5f803e3d5ffd5b5050505062000b7e84838362005814565b80821162000c76575f805160206200977683398151915260405162004e519060208082526021908201527f4572726f723a2061203e2062206e6f7420736174697366696564205b75696e746040820152605d60f81b606082015260800190565b60405180910390a16040805181815260098183015268202056616c7565206160b81b60608201526020810184905290515f80516020620097d68339815191529181900360800190a1604080518181526009918101919091526810102b30b63ab2903160b91b6060820152602081018290525f80516020620097d6833981519152906080015b60405180910390a162000c766200548c565b5f62004a5a634cdad50660e01b8360405160240162004a1f91815260200190565b8183101562000c58575f62004f1f8484620060dc565b90508181111562000b7e575f805160206200977683398151915260405162004b1f9060208082526023908201527f4572726f723a2061203e3d7e2062206e6f7420736174697366696564205b75696040820152626e745d60e81b606082015260800190565b604051602481018490526001600160a01b038084166044830152821660648201525f9062004a9a90632d182be560e21b9060840162004a1f565b604051602481018390526001600160a01b03821660448201525f9062004a57906394bf804d60e01b9060640162004a1f565b601d545f90600160a81b900460ff16156200500d57505f19919050565b601d546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a08231906024015b602060405180830381865afa15801562005057573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004a5a919062006082565b601d545f90600160a81b900460ff16156200509a57505f19919050565b601c546040516370a0823160e01b81526001600160a01b03848116600483015262004a5a9216906370a0823190602401602060405180830381865afa158015620050e6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200510c919062006082565b620052ce565b5f62004a5a6307a2d13a60e01b8360405160240162004a1f91815260200190565b80821462000c76575f8051602062009776833981519152604051620051949060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290515f80516020620097d68339815191529181900360800190a160408051818152600a91810191909152690808080808149a59da1d60b21b6060820152602081018290525f80516020620097d68339815191529060800162004ed6565b601d545f90600160a81b900460ff16156200523d57505f19919050565b601c546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a08231906024016200503b565b5f6200527d8585620059a0565b905082811115620015d4577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051620052b991906200623e565b60405180910390a1620015d4858585620059c7565b5f62004a5a63c6e6f59260e01b8360405160240162004a1f91815260200190565b5f62004a5a630a28a47760e01b8360405160240162004a1f91815260200190565b5f62004a5a63b3d7f6b960e01b8360405160240162004a1f91815260200190565b8162000c76577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200536891906200623e565b60405180910390a162000c768262005ac4565b5f62004a5a63ef8b30f760e01b8360405160240162004a1f91815260200190565b601d546040515f91829182916001600160a01b031690620053bf908690620061c4565b5f604051808303815f865af19150503d805f8114620053fa576040519150601f19603f3d011682016040523d82523d5f602084013e620053ff565b606091505b5091509150811562005429578080602001905181019062005421919062006082565b949350505050565b604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b1580156200546c575f80fd5b505afa1580156200547f573d5f803e3d5ffd5b505f979650505050505050565b5f80516020620097968339815191523b156200557d57604080515f8051602062009796833981519152602082018190526519985a5b195960d21b92820192909252600160608201525f91907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200551c929160200162006192565b60408051601f19818403018152908290526200553891620061c4565b5f604051808303815f865af19150503d805f811462005573576040519150601f19603f3d011682016040523d82523d5f602084013e62005578565b606091505b505050505b5f805461ff001916610100179055565b5f81831115620056095760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156200561a5750818411155b156200562857508262004a9d565b5f620056358484620060dc565b62005642906001620060f2565b9050600385111580156200565557508481115b156200567057620056678585620060f2565b91505062004a9d565b6200567e60035f19620060dc565b851015801562005699575062005696855f19620060dc565b81115b15620056b857620056ac855f19620060dc565b620056679084620060dc565b8285111562005717575f620056ce8487620060dc565b90505f620056dd83836200626e565b9050805f03620056f35784935050505062004a9d565b6001620057018288620060f2565b6200570d9190620060dc565b9350505062005770565b8385101562005770575f6200572d8686620060dc565b90505f6200573c83836200626e565b9050805f03620057525785935050505062004a9d565b6200575e8186620060dc565b6200576b906001620060f2565b935050505b509392505050565b5f6a636f6e736f6c652e6c6f676001600160a01b03168383604051602401620057a39291906200628e565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620057da9190620061c4565b5f60405180830381855afa9150503d805f811462000e84576040519150601f19603f3d011682016040523d82523d5f602084013e62000e84565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f92839290871691620058719190620061c4565b5f604051808303815f865af19150503d805f8114620058ac576040519150601f19603f3d011682016040523d82523d5f602084013e620058b1565b606091505b50604051632631f2b160e11b8152821515600482015291935091505f805160206200979683398151915290634c63e562906024015f6040518083038186803b158015620058fc575f80fd5b505afa1580156200590f573d5f803e3d5ffd5b505050505f81511115620015d45780515f805160206200979683398151915290634c63e562906200594a9084016020908101908501620061e1565b6040518263ffffffff1660e01b81526004016200596b911515815260200190565b5f6040518083038186803b15801562005982575f80fd5b505afa15801562005995573d5f803e3d5ffd5b505050505050505050565b5f818311620059bb57620059b58383620060dc565b62004a57565b62004a578284620060dc565b5f620059d48484620059a0565b90508181111562000b7e575f805160206200977683398151915260405162005a389060208082526022908201527f4572726f723a2061207e3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810186905290515f80516020620097d68339815191529181900360800190a160408051818152600a91810191909152690808080808149a59da1d60b21b6060820152602081018490525f80516020620097d68339815191529060800162004ba6565b8062002297575f805160206200977683398151915260405162005b189060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620022976200548c565b611a4180620062b283390190565b611a838062007cf383390190565b6001600160a01b038116811462002297575f80fd5b5f806040838503121562005b6d575f80fd5b823562005b7a8162005b46565b946020939093013593505050565b5f806040838503121562005b9a575f80fd5b823562005ba78162005b46565b9150602083013562005bb98162005b46565b809150509250929050565b6040516080810167ffffffffffffffff8111828210171562005bf457634e487b7160e01b5f52604160045260245ffd5b60405290565b5f82601f83011262005c0a575f80fd5b62005c1462005bc4565b80608084018581111562005c26575f80fd5b845b8181101562005c4257803584526020938401930162005c28565b509095945050505050565b5f6101a0828403121562005c5f575f80fd5b62005c6962005bc4565b905082601f83011262005c7a575f80fd5b62005c8462005bc4565b80608084018581111562005c96575f80fd5b845b8181101562005cbd57803562005cae8162005b46565b84526020938401930162005c98565b5081845262005ccd868262005bfa565b602085015250505062005ce583610100840162005bfa565b6040820152610180820135606082015292915050565b5f6101a0828403121562005d0d575f80fd5b62004a57838362005c4d565b5f806101c0838503121562005d2c575f80fd5b62005d38848462005c4d565b946101a0939093013593505050565b5f805f6101e0848603121562005d5b575f80fd5b62005d67858562005c4d565b956101a085013595506101c0909401359392505050565b5f805f805f60a0868803121562005d93575f80fd5b853562005da08162005b46565b9450602086013562005db28162005b46565b9350604086013562005dc48162005b46565b9250606086013562005dd68162005b46565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101562005e295783516001600160a01b03168352928401929184019160010162005e02565b50909695505050505050565b5f805f6060848603121562005e48575f80fd5b833562005e558162005b46565b9250602084013562005e678162005b46565b929592945050506040919091013590565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f805b8481101562005f1e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005f085783516001600160e01b0319168252928b019260019290920191908b019062005edc565b50978a0197955050509187019160010162005e9e565b50919998505050505050505050565b5f5b8381101562005f4957818101518382015260200162005f2f565b50505f910152565b5f815180845262005f6a81602086016020860162005f2d565b601f01601f19169290920160200192915050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b8281101562005fd557603f1988860301845262005fc285835162005f51565b9450928501929085019060010162005fa3565b5092979650505050505050565b5f6020828403121562005ff3575f80fd5b813562004a9d8162005b46565b5f805f806080858703121562006014575f80fd5b8435620060218162005b46565b93506020850135620060338162005b46565b92506040850135620060458162005b46565b9396929550929360600135925050565b60ff8116811462002297575f80fd5b5f6020828403121562006075575f80fd5b813562004a9d8162006055565b5f6020828403121562006093575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111562004a5a5762004a5a620060c8565b8082018082111562004a5a5762004a5a620060c8565b5f600182016200611c576200611c620060c8565b5060010190565b8082025f8212600160ff1b84141615620061415762006141620060c8565b818105831482151762004a5a5762004a5a620060c8565b600181811c908216806200616d57607f821691505b6020821081036200618c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160e01b03198316815281515f90620061b681600485016020870162005f2d565b919091016004019392505050565b5f8251620061d781846020870162005f2d565b9190910192915050565b5f60208284031215620061f2575f80fd5b8151801515811462004a9d575f80fd5b5f6020828403121562006213575f80fd5b815162004a9d8162005b46565b5f6020828403121562006231575f80fd5b815162004a9d8162006055565b60408152600560408201526422b93937b960d91b6060820152608060208201525f62004a57608083018462005f51565b5f826200628957634e487b7160e01b5f52601260045260245ffd5b500690565b604081525f620062a2604083018562005f51565b9050826020830152939250505056fe60c060405234801562000010575f80fd5b5060405162001a4138038062001a418339810160408190526200003391620001bb565b806040518060400160405280600b81526020016a455243343632364d6f636b60a81b8152506040518060400160405280600681526020016545343632364d60d01b81525081600390816200008891906200028a565b5060046200009782826200028a565b5050505f80620000ad83620000dc60201b60201c565b9150915081620000bf576012620000c1565b805b60ff1660a05250506001600160a01b03166080525062000398565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b03871691620001249162000352565b5f60405180830381855afa9150503d805f81146200015e576040519150601f19603f3d011682016040523d82523d5f602084013e62000163565b606091505b50915091508180156200017857506020815110155b15620001af575f8180602001905181019062000195919062000380565b905060ff8111620001ad576001969095509350505050565b505b505f9485945092505050565b5f60208284031215620001cc575f80fd5b81516001600160a01b0381168114620001e3575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200021357607f821691505b6020821081036200023257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000285575f81815260208120601f850160051c81016020861015620002605750805b601f850160051c820191505b8181101562000281578281556001016200026c565b5050505b505050565b81516001600160401b03811115620002a657620002a6620001ea565b620002be81620002b78454620001fe565b8462000238565b602080601f831160018114620002f4575f8415620002dc5750858301515b5f19600386901b1c1916600185901b17855562000281565b5f85815260208120601f198616915b82811015620003245788860151825594840194600190910190840162000303565b50858210156200034257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f82515f5b8181101562000373576020818601810151858301520162000357565b505f920191825250919050565b5f6020828403121562000391575f80fd5b5051919050565b60805160a051611672620003cf5f395f61057c01525f81816102850152818161041601528181610c8d0152610e7a01526116725ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c806370a08231116100fe578063b460af941161009e578063ce96cb771161006e578063ce96cb77146103c6578063d905777e146103d9578063dd62ed3e146103ec578063ef8b30f7146103b3575f80fd5b8063b460af941461038d578063ba087652146103a0578063c63d75b6146102c2578063c6e6f592146103b3575f80fd5b80639dc29fac116100d95780639dc29fac14610341578063a457c2d714610354578063a9059cbb14610367578063b3d7f6b91461037a575f80fd5b806370a08231146102fe57806394bf804d1461032657806395d89b4114610339575f80fd5b8063313ce56711610169578063402d267d11610144578063402d267d146102c257806340c10f19146102d65780634cdad506146101fa5780636e553f65146102eb575f80fd5b8063313ce5671461025e57806338d52e0f1461027857806339509351146102af575f80fd5b8063095ea7b3116101a4578063095ea7b31461020d5780630a28a4771461023057806318160ddd1461024357806323b872dd1461024b575f80fd5b806301e1d114146101ca57806306fdde03146101e557806307a2d13a146101fa575b5f80fd5b6101d26103ff565b6040519081526020015b60405180910390f35b6101ed61048c565b6040516101dc91906112f4565b6101d2610208366004611326565b61051c565b61022061021b366004611358565b61052d565b60405190151581526020016101dc565b6101d261023e366004611326565b610544565b6002546101d2565b610220610259366004611380565b610550565b610266610575565b60405160ff90911681526020016101dc565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016101dc565b6102206102bd366004611358565b6105a0565b6101d26102d03660046113b9565b505f1990565b6102e96102e4366004611358565b6105c1565b005b6101d26102f93660046113d2565b6105cf565b6101d261030c3660046113b9565b6001600160a01b03165f9081526020819052604090205490565b6101d26103343660046113d2565b6105f6565b6101ed61060f565b6102e961034f366004611358565b61061e565b610220610362366004611358565b610628565b610220610375366004611358565b6106ad565b6101d2610388366004611326565b6106ba565b6101d261039b3660046113fc565b6106c6565b6101d26103ae3660046113fc565b610740565b6101d26103c1366004611326565b6107b2565b6101d26103d43660046113b9565b6107bd565b6101d26103e73660046113b9565b6107df565b6101d26103fa366004611435565b6107fc565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610463573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610487919061145d565b905090565b60606003805461049b90611474565b80601f01602080910402602001604051908101604052809291908181526020018280546104c790611474565b80156105125780601f106104e957610100808354040283529160200191610512565b820191905f5260205f20905b8154815290600101906020018083116104f557829003601f168201915b5050505050905090565b5f610527825f610826565b92915050565b5f3361053a81858561085e565b5060019392505050565b5f610527826001610982565b5f3361055d8582856109b1565b610568858585610a29565b60019150505b9392505050565b5f610487817f00000000000000000000000000000000000000000000000000000000000000006114c0565b5f3361053a8185856105b283836107fc565b6105bc91906114d9565b61085e565b6105cb8282610bcb565b5050565b5f6105de565b60405180910390fd5b5f6105e8846107b2565b905061056e33848684610c88565b5f80610601846106ba565b905061056e33848387610c88565b60606004805461049b90611474565b6105cb8282610d1a565b5f338161063582866107fc565b9050838110156106955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d5565b6106a2828686840361085e565b506001949350505050565b5f3361053a818585610a29565b5f610527826001610826565b5f6106d0826107bd565b84111561071f5760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d61780060448201526064016105d5565b5f61072985610544565b90506107383385858885610e47565b949350505050565b5f61074a826107df565b8411156107995760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d617800000060448201526064016105d5565b5f6107a38561051c565b90506107383385858489610e47565b5f610527825f610982565b6001600160a01b0381165f90815260208190526040812054610527905f610826565b6001600160a01b0381165f90815260208190526040812054610527565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f61056e6108326103ff565b61083d9060016114d9565b6108485f600a6115cc565b60025461085591906114d9565b85919085610f07565b6001600160a01b0383166108c05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d5565b6001600160a01b0382166109215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d5565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f61056e61099182600a6115cc565b60025461099e91906114d9565b6109a66103ff565b6108559060016114d9565b5f6109bc84846107fc565b90505f198114610a235781811015610a165760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d5565b610a23848484840361085e565b50505050565b6001600160a01b038316610a8d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d5565b6001600160a01b038216610aef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d5565b6001600160a01b0383165f9081526020819052604090205481811015610b665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d5565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a23565b6001600160a01b038216610c215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d5565b8060025f828254610c3291906114d9565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b610cb47f0000000000000000000000000000000000000000000000000000000000000000853085610f62565b610cbe8382610bcb565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610d0c929190918252602082015260400190565b60405180910390a350505050565b6001600160a01b038216610d7a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d5565b6001600160a01b0382165f9081526020819052604090205481811015610ded5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d5565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610975565b505050565b826001600160a01b0316856001600160a01b031614610e6b57610e6b8386836109b1565b610e758382610d1a565b610ea07f00000000000000000000000000000000000000000000000000000000000000008584610fcd565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610ef8929190918252602082015260400190565b60405180910390a45050505050565b5f80610f14868686610ffd565b90506001836002811115610f2a57610f2a6115da565b148015610f4657505f8480610f4157610f416115ee565b868809115b15610f5957610f566001826114d9565b90505b95945050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a239085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526110e2565b6040516001600160a01b038316602482015260448101829052610e4290849063a9059cbb60e01b90606401610f96565b5f80805f19858709858702925082811083820303915050805f036110345783828161102a5761102a6115ee565b049250505061056e565b80841161107b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016105d5565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f611136826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111b59092919063ffffffff16565b905080515f14806111565750808060200190518101906111569190611602565b610e425760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d5565b606061073884845f85855f80866001600160a01b031685876040516111da9190611621565b5f6040518083038185875af1925050503d805f8114611214576040519150601f19603f3d011682016040523d82523d5f602084013e611219565b606091505b509150915061122a87838387611235565b979650505050505050565b606083156112a35782515f0361129c576001600160a01b0385163b61129c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d5565b5081610738565b61073883838151156112b85781518083602001fd5b8060405162461bcd60e51b81526004016105d591906112f4565b5f5b838110156112ec5781810151838201526020016112d4565b50505f910152565b602081525f82518060208401526113128160408501602087016112d2565b601f01601f19169190910160400192915050565b5f60208284031215611336575f80fd5b5035919050565b80356001600160a01b0381168114611353575f80fd5b919050565b5f8060408385031215611369575f80fd5b6113728361133d565b946020939093013593505050565b5f805f60608486031215611392575f80fd5b61139b8461133d565b92506113a96020850161133d565b9150604084013590509250925092565b5f602082840312156113c9575f80fd5b61056e8261133d565b5f80604083850312156113e3575f80fd5b823591506113f36020840161133d565b90509250929050565b5f805f6060848603121561140e575f80fd5b8335925061141e6020850161133d565b915061142c6040850161133d565b90509250925092565b5f8060408385031215611446575f80fd5b61144f8361133d565b91506113f36020840161133d565b5f6020828403121561146d575f80fd5b5051919050565b600181811c9082168061148857607f821691505b6020821081036114a657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8181168382160190811115610527576105276114ac565b80820180821115610527576105276114ac565b600181815b8085111561152657815f190482111561150c5761150c6114ac565b8085161561151957918102915b93841c93908002906114f1565b509250929050565b5f8261153c57506001610527565b8161154857505f610527565b816001811461155e576002811461156857611584565b6001915050610527565b60ff841115611579576115796114ac565b50506001821b610527565b5060208310610133831016604e8410600b84101617156115a7575081810a610527565b6115b183836114ec565b805f19048211156115c4576115c46114ac565b029392505050565b5f61056e60ff84168361152e565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f60208284031215611612575f80fd5b8151801515811461056e575f80fd5b5f82516116328184602087016112d2565b919091019291505056fea2646970667358221220bfeeb6aac754bec2039c76fb269ad9ee8fdb6fb56212bf73de566b9a477d40af64736f6c6343000814003360e060405234801562000010575f80fd5b5060405162001a8338038062001a838339810160408190526200003391620001c8565b80826040518060400160405280600e81526020016d135e48151bdad95b8815985d5b1d60921b8152506040518060400160405280600581526020016426aa25a72b60d91b81525081600390816200008b9190620002b3565b5060046200009a8282620002b3565b5050505f80620000b083620000e960201b60201c565b9150915081620000c2576012620000c4565b805b60ff90811660a0526001600160a01b0390931660805250501660c05250620003c19050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169162000131916200037b565b5f60405180830381855afa9150503d805f81146200016b576040519150601f19603f3d011682016040523d82523d5f602084013e62000170565b606091505b50915091508180156200018557506020815110155b15620001bc575f81806020019051810190620001a29190620003a9565b905060ff8111620001ba576001969095509350505050565b505b505f9485945092505050565b5f8060408385031215620001da575f80fd5b82516001600160a01b0381168114620001f1575f80fd5b602084015190925060ff8116811462000208575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200023c57607f821691505b6020821081036200025b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002ae575f81815260208120601f850160051c81016020861015620002895750805b601f850160051c820191505b81811015620002aa5782815560010162000295565b5050505b505050565b81516001600160401b03811115620002cf57620002cf62000213565b620002e781620002e0845462000227565b8462000261565b602080601f8311600181146200031d575f8415620003055750858301515b5f19600386901b1c1916600185901b178555620002aa565b5f85815260208120601f198616915b828110156200034d578886015182559484019460019091019084016200032c565b50858210156200036b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f82515f5b818110156200039c576020818601810151858301520162000380565b505f920191825250919050565b5f60208284031215620003ba575f80fd5b5051919050565b60805160a05160c0516116746200040f5f395f818161052e015281816107fd015261096501525f61054f01525f8181610260015281816103c901528181610bca0152610c8a01526116745ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806370a08231116100f3578063ba08765211610093578063ce96cb771161006e578063ce96cb7714610379578063d905777e1461038c578063dd62ed3e1461039f578063ef8b30f714610366575f80fd5b8063ba08765214610353578063c63d75b61461029d578063c6e6f59214610366575f80fd5b8063a457c2d7116100ce578063a457c2d714610307578063a9059cbb1461031a578063b3d7f6b91461032d578063b460af9414610340575f80fd5b806370a08231146102c457806394bf804d146102ec57806395d89b41146102ff575f80fd5b806323b872dd1161015e5780633950935111610139578063395093511461028a578063402d267d1461029d5780634cdad506146101d55780636e553f65146102b1575f80fd5b806323b872dd14610226578063313ce5671461023957806338d52e0f14610253575f80fd5b806301e1d114146101a557806306fdde03146101c057806307a2d13a146101d5578063095ea7b3146101e85780630a28a4771461020b57806318160ddd1461021e575b5f80fd5b6101ad6103b2565b6040519081526020015b60405180910390f35b6101c861043f565b6040516101b791906112f6565b6101ad6101e3366004611328565b6104cf565b6101fb6101f636600461135a565b6104e0565b60405190151581526020016101b7565b6101ad610219366004611328565b6104f7565b6002546101ad565b6101fb610234366004611382565b610503565b610241610528565b60405160ff90911681526020016101b7565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016101b7565b6101fb61029836600461135a565b610573565b6101ad6102ab3660046113bb565b505f1990565b6101ad6102bf3660046113d4565b610594565b6101ad6102d23660046113bb565b6001600160a01b03165f9081526020819052604090205490565b6101ad6102fa3660046113d4565b6105bb565b6101c86105d4565b6101fb61031536600461135a565b6105e3565b6101fb61032836600461135a565b610668565b6101ad61033b366004611328565b610675565b6101ad61034e3660046113fe565b610681565b6101ad6103613660046113fe565b6106fb565b6101ad610374366004611328565b61076d565b6101ad6103873660046113bb565b610778565b6101ad61039a3660046113bb565b61079a565b6101ad6103ad366004611437565b6107b7565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610416573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043a919061145f565b905090565b60606003805461044e90611476565b80601f016020809104026020016040519081016040528092919081815260200182805461047a90611476565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f6104da825f6107e1565b92915050565b5f336104ed818585610839565b5060019392505050565b5f6104da82600161095c565b5f336105108582856109ab565b61051b858585610a23565b60019150505b9392505050565b5f61043a7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114c2565b5f336104ed81858561058583836107b7565b61058f91906114db565b610839565b5f6105a3565b60405180910390fd5b5f6105ad8461076d565b905061052133848684610bc5565b5f806105c684610675565b905061052133848387610bc5565b60606004805461044e90611476565b5f33816105f082866107b7565b9050838110156106505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059a565b61065d8286868403610839565b506001949350505050565b5f336104ed818585610a23565b5f6104da8260016107e1565b5f61068b82610778565b8411156106da5760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d617800604482015260640161059a565b5f6106e4856104f7565b90506106f33385858885610c57565b949350505050565b5f6107058261079a565b8411156107545760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d6178000000604482015260640161059a565b5f61075e856104cf565b90506106f33385858489610c57565b5f6104da825f61095c565b6001600160a01b0381165f908152602081905260408120546104da905f6107e1565b6001600160a01b0381165f908152602081905260408120546104da565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f6105216107ed6103b2565b6107f89060016114db565b6108237f0000000000000000000000000000000000000000000000000000000000000000600a6115ce565b60025461083091906114db565b85919085610d17565b6001600160a01b03831661089b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059a565b6001600160a01b0382166108fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61052161098b7f0000000000000000000000000000000000000000000000000000000000000000600a6115ce565b60025461099891906114db565b6109a06103b2565b6108309060016114db565b5f6109b684846107b7565b90505f198114610a1d5781811015610a105760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161059a565b610a1d8484848403610839565b50505050565b6001600160a01b038316610a875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059a565b6001600160a01b038216610ae95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059a565b6001600160a01b0383165f9081526020819052604090205481811015610b605760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059a565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a1d565b610bf17f0000000000000000000000000000000000000000000000000000000000000000853085610d77565b610bfb8382610de2565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610c49929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610c7b57610c7b8386836109ab565b610c858382610e9f565b610cb07f00000000000000000000000000000000000000000000000000000000000000008584610fcf565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610d08929190918252602082015260400190565b60405180910390a45050505050565b5f80610d24868686610fff565b90506001836002811115610d3a57610d3a6115dc565b148015610d5657505f8480610d5157610d516115f0565b868809115b15610d6957610d666001826114db565b90505b95945050505050565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a1d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526110e4565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161059a565b8060025f828254610e4991906114db565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610eff5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161059a565b6001600160a01b0382165f9081526020819052604090205481811015610f725760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161059a565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040516001600160a01b038316602482015260448101829052610d7290849063a9059cbb60e01b90606401610dab565b5f80805f19858709858702925082811083820303915050805f036110365783828161102c5761102c6115f0565b0492505050610521565b80841161107d5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161059a565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f611138826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111b79092919063ffffffff16565b905080515f14806111585750808060200190518101906111589190611604565b610d725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161059a565b60606106f384845f85855f80866001600160a01b031685876040516111dc9190611623565b5f6040518083038185875af1925050503d805f8114611216576040519150601f19603f3d011682016040523d82523d5f602084013e61121b565b606091505b509150915061122c87838387611237565b979650505050505050565b606083156112a55782515f0361129e576001600160a01b0385163b61129e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161059a565b50816106f3565b6106f383838151156112ba5781518083602001fd5b8060405162461bcd60e51b815260040161059a91906112f6565b5f5b838110156112ee5781810151838201526020016112d6565b50505f910152565b602081525f82518060208401526113148160408501602087016112d4565b601f01601f19169190910160400192915050565b5f60208284031215611338575f80fd5b5035919050565b80356001600160a01b0381168114611355575f80fd5b919050565b5f806040838503121561136b575f80fd5b6113748361133f565b946020939093013593505050565b5f805f60608486031215611394575f80fd5b61139d8461133f565b92506113ab6020850161133f565b9150604084013590509250925092565b5f602082840312156113cb575f80fd5b6105218261133f565b5f80604083850312156113e5575f80fd5b823591506113f56020840161133f565b90509250929050565b5f805f60608486031215611410575f80fd5b833592506114206020850161133f565b915061142e6040850161133f565b90509250925092565b5f8060408385031215611448575f80fd5b6114518361133f565b91506113f56020840161133f565b5f6020828403121561146f575f80fd5b5051919050565b600181811c9082168061148a57607f821691505b6020821081036114a857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156104da576104da6114ae565b808201808211156104da576104da6114ae565b600181815b8085111561152857815f190482111561150e5761150e6114ae565b8085161561151b57918102915b93841c93908002906114f3565b509250929050565b5f8261153e575060016104da565b8161154a57505f6104da565b8160018114611560576002811461156a57611586565b60019150506104da565b60ff84111561157b5761157b6114ae565b50506001821b6104da565b5060208310610133831016604e8410600b84101617156115a9575081810a6104da565b6115b383836114ee565b805f19048211156115c6576115c66114ae565b029392505050565b5f61052160ff841683611530565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f60208284031215611614575f80fd5b81518015158114610521575f80fd5b5f82516116348184602087016112d4565b919091019291505056fea2646970667358221220b5818c79fec6a05bad7a8093e02196550623f2b16b44d26704c0b4cc008e285864736f6c6343000814003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f500000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12db2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8a26469706673582212205f46b89703a2f4896c571504ecdce7f4ca7739551beee545de87dd7ff12bf4d864736f6c63430008140033608060405234801562000010575f80fd5b506040518060400160405280600981526020016845524332304d6f636b60b81b815250604051806040016040528060048152602001634532304d60e01b815250816003908162000061919062000119565b50600462000070828262000119565b505050620001e1565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620000a257607f821691505b602082108103620000c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000114575f81815260208120601f850160051c81016020861015620000ef5750805b601f850160051c820191505b818110156200011057828155600101620000fb565b5050505b505050565b81516001600160401b0381111562000135576200013562000079565b6200014d816200014684546200008d565b84620000c7565b602080601f83116001811462000183575f84156200016b5750858301515b5f19600386901b1c1916600185901b17855562000110565b5f85815260208120601f198616915b82811015620001b35788860151825594840194600190910190840162000192565b5085821015620001d157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610a7a80620001ef5f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806340c10f19116100885780639dc29fac116100635780639dc29fac1461019c578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f80fd5b806340c10f191461015757806370a082311461016c57806395d89b4114610194575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f80fd5b6100d76101e8565b6040516100e491906108d5565b60405180910390f35b6101006100fb36600461093b565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b610100610130366004610963565b610291565b604051601281526020016100e4565b61010061015236600461093b565b6102b4565b61016a61016536600461093b565b6102d5565b005b61011461017a36600461099c565b6001600160a01b03165f9081526020819052604090205490565b6100d76102e3565b61016a6101aa36600461093b565b6102f2565b6101006101bd36600461093b565b6102fc565b6101006101d036600461093b565b61037b565b6101146101e33660046109bc565b610388565b6060600380546101f7906109ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610223906109ed565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103b2565b60019150505b92915050565b5f3361029e8582856104d6565b6102a985858561054e565b506001949350505050565b5f336102858185856102c68383610388565b6102d09190610a25565b6103b2565b6102df82826106f0565b5050565b6060600480546101f7906109ed565b6102df82826107ad565b5f33816103098286610388565b90508381101561036e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103b2565b5f3361028581858561054e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610365565b6001600160a01b0382166104755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610365565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104e18484610388565b90505f198114610548578181101561053b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610365565b61054884848484036103b2565b50505050565b6001600160a01b0383166105b25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610365565b6001600160a01b0382166106145760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610365565b6001600160a01b0383165f908152602081905260409020548181101561068b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610365565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610548565b6001600160a01b0382166107465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610365565b8060025f8282546107579190610a25565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661080d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610365565b6001600160a01b0382165f90815260208190526040902054818110156108805760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610365565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104c9565b5f6020808352835180828501525f5b81811015610900578581018301518582016040015282016108e4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610936575f80fd5b919050565b5f806040838503121561094c575f80fd5b61095583610920565b946020939093013593505050565b5f805f60608486031215610975575f80fd5b61097e84610920565b925061098c60208501610920565b9150604084013590509250925092565b5f602082840312156109ac575f80fd5b6109b582610920565b9392505050565b5f80604083850312156109cd575f80fd5b6109d683610920565b91506109e460208401610920565b90509250929050565b600181811c90821680610a0157607f821691505b602082108103610a1f57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea264697066735822122070355c4cffd43079738683247f62ed2170d7ce00c24e742516a3ea3d63e467d064736f6c63430008140033","sourceMap":"734:838:305:-:0;;;;;1572:26:268;;;1594:4;-1:-1:-1;;1572:26:268;;;;;;;;3288:44:273;;;;;;;;;;;807:15:305;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;779:43:305;;;-1:-1:-1;;;;;;779:43:305;-1:-1:-1;;;;;779:43:305;;;;;;;;;;734:838;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801562000010575f80fd5b506004361062000410575f3560e01c80638a764bc8116200021f578063bf791746116200012b578063dbfa826511620000b7578063f7ab8c841162000083578063f7ab8c84146200093f578063fa7626d41462000956578063fa91c87c1462000963578063fbdc4189146200097a575f80fd5b8063dbfa826514620008f0578063dea9d64e1462000907578063e20c9f71146200091e578063ec5ccdbe1462000928575f80fd5b8063c5aea78011620000f7578063c5aea7801462000894578063c5b13cad14620008ab578063ccb139a914620008c2578063cdbecf7b14620008d9575f80fd5b8063bf7917461462000838578063bfa30a7c146200084f578063bfc2b3a01462000866578063c168a242146200087d575f80fd5b8063a6f9297011620001ab578063b6f9c1b71162000177578063b6f9c1b714620007d8578063b7b0f35814620007ef578063b9e719981462000806578063ba414fa6146200081d575f80fd5b8063a6f929701462000789578063ab23e76b14620007a0578063b152b6d414620007b7578063b5508aa914620007ce575f80fd5b806395f1481b11620001eb57806395f1481b146200072d578063999f8a2d14620007445780639da01e21146200075b578063a21f731f1462000772575f80fd5b80638a764bc814620006de5780638d02a8cb14620006f55780638edbf2ca146200070c578063916a17c61462000723575f80fd5b80634c216f35116200031f57806366d9a9a011620002ab5780637c13996811620002775780637c1399681462000680578063840f3a74146200069757806385226c8114620006ae57806389bf68d614620006c7575f80fd5b806366d9a9a014620006225780636aaa88bc146200063b578063730b01ff146200065257806378a72e861462000669575f80fd5b80635900f73411620002eb5780635900f73414620005c65780635974db9314620005dd5780635f33763c14620005f457806366baecaf146200060b575f80fd5b80634c216f35146200056a5780634e2a578d14620005815780634f4b85491462000598578063583a33e814620005af575f80fd5b80631ed7831c116200039f5780633e5e3c23116200036b5780633e5e3c2314620005285780633f7286f414620005325780633fbc89c5146200053c57806345a608191462000553575f80fd5b80631ed7831c14620004c15780632797118b14620004e357806337bad15514620004fa578063399785c21462000511575f80fd5b80630a9254e411620003df5780630a9254e41462000472578063125cc288146200047c5780631ac95e7114620004935780631b6b03c214620004aa575f80fd5b8063029122a6146200041457806303ecaa63146200042d57806308052de114620004445780630a2a2378146200045b575b5f80fd5b6200042b6200042536600462005b5b565b62000991565b005b6200042b6200043e36600462005b88565b62000b84565b6200042b6200045536600462005cfb565b62000c5d565b6200042b6200046c36600462005d19565b62000c7a565b6200042b62000e8c565b6200042b6200048d36600462005d47565b62000f24565b6200042b620004a436600462005d7e565b62000f7d565b6200042b620004bb36600462005cfb565b6200107c565b620004cb6200109d565b604051620004da919062005de7565b60405180910390f35b6200042b620004f436600462005b5b565b620010ff565b6200042b6200050b36600462005d19565b620012ec565b6200042b6200052236600462005b88565b6200133c565b620004cb620013d3565b620004cb62001433565b6200042b6200054d36600462005d19565b62001493565b6200042b6200056436600462005e35565b620014e3565b6200042b6200057b36600462005d19565b620015db565b6200042b6200059236600462005cfb565b6200163c565b6200042b620005a936600462005b5b565b6200165d565b6200042b620005c036600462005e35565b62001839565b6200042b620005d736600462005d19565b62001c3b565b6200042b620005ee36600462005b88565b62001e2f565b6200042b6200060536600462005cfb565b62001ec6565b6200042b6200061c36600462005cfb565b6200229a565b6200062c62002420565b604051620004da919062005e78565b6200042b6200064c36600462005d19565b6200250e565b6200042b6200066336600462005d19565b6200255e565b6200042b6200067a36600462005e35565b620025ae565b6200042b6200069136600462005d47565b62002691565b6200042b620006a836600462005d19565b620026ea565b620006b86200273a565b604051620004da919062005f7e565b6200042b620006d836600462005d19565b6200280f565b6200042b620006ef36600462005d7e565b62002870565b6200042b6200070636600462005cfb565b62002966565b6200042b6200071d36600462005cfb565b62002987565b6200062c620029a0565b6200042b6200073e36600462005fe2565b62002a85565b6200042b6200075536600462005b5b565b62002b60565b6200042b6200076c36600462005b5b565b62002d4d565b6200042b6200078336600462005d19565b62002f3a565b6200042b6200079a36600462005d19565b62002f9b565b6200042b620007b136600462005b5b565b62002feb565b6200042b620007c836600462006000565b620031c7565b620006b8620032bc565b6200042b620007e936600462005b88565b62003391565b6200042b6200080036600462005b5b565b62003428565b6200042b6200081736600462005d19565b62003604565b6200082762003665565b6040519015158152602001620004da565b6200042b6200084936600462005fe2565b62003786565b6200042b6200086036600462005d47565b62003861565b6200042b6200087736600462005d19565b620038b8565b6200042b6200088e36600462005d47565b62003908565b6200042b620008a536600462006000565b6200395f565b6200042b620008bc36600462005d19565b62003d66565b6200042b620008d336600462006064565b62003d88565b6200042b620008ea36600462006000565b62003eb8565b6200042b6200090136600462005d19565b620042b1565b6200042b6200091836600462005cfb565b620042d3565b620004cb620042f4565b6200042b6200093936600462006000565b62004354565b6200042b6200095036600462005b5b565b62004449565b5f54620008279060ff1681565b6200042b6200097436600462005e35565b62004625565b6200042b6200098b36600462005d19565b620049a2565b601d54600160a01b900460ff1662000a87575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a14573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a3a919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562000a6f575f80fd5b505afa15801562000a82573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000ad4575f80fd5b505af115801562000ae7573d5f803e3d5ffd5b505050505f62000af88284620049f2565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000b48575f80fd5b505af115801562000b5b573d5f803e3d5ffd5b505050505f62000b6d82858662004a60565b905062000b7e8184601b5462004aa4565b50505050565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000bd1575f80fd5b505af115801562000be4573d5f803e3d5ffd5b5050601d5460405163402d267d60e01b81526001600160a01b038581166004830152909116925063402d267d91506024015b602060405180830381865afa15801562000c32573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c58919062006082565b505050565b62000c688162001ec6565b80515162000c768162003786565b5050565b62000c858262001ec6565b81518051602082015160409092015190919062000cae845f62000ca88462004c3a565b62004ccf565b604051632631f2b160e11b81526001600160a01b03838116908616141560048201529094505f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562000d03575f80fd5b505afa15801562000d16573d5f803e3d5ffd5b5050604051632631f2b160e11b815286151560048201525f80516020620097968339815191529250634c63e56291506024015f6040518083038186803b15801562000d5f575f80fd5b505afa15801562000d72573d5f803e3d5ffd5b5050601d5462000d9192506001600160a01b0316905082855f62004d0f565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000dde575f80fd5b505af115801562000df1573d5f803e3d5ffd5b5050601d54604051632d182be560e21b8152600481018890526001600160a01b03868116602483015285811660448301525f9450909116915063b460af94906064016020604051808303815f875af115801562000e50573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000e76919062006082565b905062000e84815f62004df1565b505050505050565b601e54601c80546001600160a01b0319166001600160a01b03909216918217905560405162000ebb9062005b2a565b6001600160a01b039091168152602001604051809103905ff08015801562000ee5573d5f803e3d5ffd5b50601d80545f601b5560ff60a81b196001600160a81b03199091166001600160a01b039390931692909217600160a01b1791909116600160a81b179055565b62000f2f8362001ec6565b82518051602082015160409092015190919062000f52855f62000ca88462004c3a565b601d5490955062000f6f906001600160a01b031682858762004d0f565b62000e848383838862003eb8565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562000fca575f80fd5b505af115801562000fdd573d5f803e3d5ffd5b505050505f62000fed8262004ee8565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b1580156200103d575f80fd5b505af115801562001050573d5f803e3d5ffd5b505050505f6200106283878762004a60565b9050620010738183601b5462004f09565b50505050505050565b620010878162001ec6565b8051805160209091015162000c58828262000b84565b6060600d805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311620010d6575b5050505050905090565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b1580156200114c575f80fd5b505af11580156200115f573d5f803e3d5ffd5b505050505f6200117182848562004f84565b601d54909150600160a01b900460ff166200126a575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200121d919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562001252575f80fd5b505afa15801562001265573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620012b7575f80fd5b505af1158015620012ca573d5f803e3d5ffd5b505050505f620012db828562004fbe565b905062000b7e8184601b5462004f09565b620012f78262001ec6565b8151516200130b825f62000ca88462004ff0565b601c54601d5491935062001330916001600160a01b03918216918491165f1962004d0f565b62000c58818362003428565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001389575f80fd5b505af11580156200139c573d5f803e3d5ffd5b5050601d5460405163ce96cb7760e01b81526001600160a01b038581166004830152909116925063ce96cb77915060240162000c16565b6060600f805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620010d6575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620010d6575050505050905090565b6200149e8262001ec6565b815151620014b2825f62000ca8846200507d565b601c54601d54919350620014d7916001600160a01b03918216918491165f1962004d0f565b62000c5881836200165d565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001530575f80fd5b505af115801562001543573d5f803e3d5ffd5b505050505f620015538262005112565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620015a3575f80fd5b505af1158015620015b6573d5f803e3d5ffd5b505050505f620015c68362005112565b9050620015d4828262005133565b5050505050565b620015e68262001ec6565b81518051602082015160409092015190919062001609845f62000ca88662005220565b601c54601d549195506200162e916001600160a01b03918216918691165f1962004d0f565b620015d48383838762004354565b620016478162001ec6565b8051805160209091015162000c5882826200133c565b601d54600160a01b900460ff1662001753575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001706919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200173b575f80fd5b505afa1580156200174e573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620017a0575f80fd5b505af1158015620017b3573d5f803e3d5ffd5b505050505f620017c4828462004fbe565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001814575f80fd5b505af115801562001827573d5f803e3d5ffd5b505050505f620012db82858662004f84565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa15801562001882573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620018a8919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620018f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200191c919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e926200195a928b9290911690600401620060ae565b602060405180830381865afa15801562001976573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200199c919062006082565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620019ec575f80fd5b505af1158015620019ff573d5f803e3d5ffd5b505050505f62001a10858762004fbe565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562001a5e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a84919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562001ad2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001af8919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e9262001b36928f9290911690600401620060ae565b602060405180830381865afa15801562001b52573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b78919062006082565b905062001bb28362001b8b868a620060dc565b601b5460405180604001604052806005815260200164185cdcd95d60da1b81525062005270565b62001bea8262001bc38a89620060f2565b601b5460405180604001604052806005815260200164736861726560d81b81525062005270565b5f19851462001c2f5762001c2f8162001c048688620060dc565b601b5460405180604001604052806009815260200168616c6c6f77616e636560b81b81525062005270565b50505050505050505050565b62001c468262001ec6565b81518051602082015160409092015190919062001c69845f62000ca88462004ff0565b604051632631f2b160e11b81526001600160a01b03838116908616141560048201529094505f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562001cbe575f80fd5b505afa15801562001cd1573d5f803e3d5ffd5b5050604051632631f2b160e11b815286151560048201525f80516020620097968339815191529250634c63e56291506024015f6040518083038186803b15801562001d1a575f80fd5b505afa15801562001d2d573d5f803e3d5ffd5b5050601d5462001d4c92506001600160a01b0316905082855f62004d0f565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001d99575f80fd5b505af115801562001dac573d5f803e3d5ffd5b5050601d54604051635d043b2960e11b8152600481018890526001600160a01b0386811660248301528581166044830152909116925063ba08765291506064016020604051808303815f875af115801562001e09573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000e84919062006082565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562001e7c575f80fd5b505af115801562001e8f573d5f803e3d5ffd5b5050601d5460405163631ebadb60e11b81526001600160a01b038581166004830152909116925063c63d75b6915060240162000c16565b5f5b60048110156200228b5781515f90826004811062001eea5762001eea6200609a565b6020020151604051632631f2b160e11b81526001600160a01b0382163b1560048201529091505f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562001f40575f80fd5b505afa15801562001f53573d5f803e3d5ffd5b505050505f8360200151836004811062001f715762001f716200609a565b6020020151601c546040516340c10f1960e01b81526001600160a01b038581166004830152602482018490529293509116906340c10f19906044015f604051808303815f87803b15801562001fc4575f80fd5b505af192505050801562001fd6575060015b6200203657604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b1580156200201e575f80fd5b505afa15801562002031573d5f803e3d5ffd5b505050505b601c54601d5462002057916001600160a01b03908116918591168462004d0f565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620020a4575f80fd5b505af1158015620020b7573d5f803e3d5ffd5b5050601d54604051636e553f6560e01b8152600481018590526001600160a01b0386811660248301529091169250636e553f6591506044016020604051808303815f875af19250505080156200212c575060408051601f3d908101601f19168201909252620021299181019062006082565b60015b6200219157604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562002174575f80fd5b505afa15801562002187573d5f803e3d5ffd5b5050505062002193565b505b5f84604001518460048110620021ad57620021ad6200609a565b6020020151601c546040516340c10f1960e01b81526001600160a01b038681166004830152602482018490529293509116906340c10f19906044015f604051808303815f87803b15801562002200575f80fd5b505af192505050801562002212575060015b6200227257604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b1580156200225a575f80fd5b505afa1580156200226d573d5f803e3d5ffd5b505050505b5050508080620022829062006108565b91505062001ec8565b5062002297816200229a565b50565b5f81606001511262002367576060810151601c54601d546040516340c10f1960e01b81526001600160a01b039182166004820152602481018490529116906340c10f19906044015b5f604051808303815f87803b158015620022fa575f80fd5b505af19250505080156200230c575060015b62000c7657604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b15801562002354575f80fd5b505afa15801562000e84573d5f803e3d5ffd5b6060810151604051632631f2b160e11b8152600160ff1b9190911260048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b158015620023b7575f80fd5b505afa158015620023ca573d5f803e3d5ffd5b505050505f81606001515f19620023e2919062006123565b601c54601d54604051632770a7eb60e21b81526001600160a01b039182166004820152602481018490529293501690639dc29fac90604401620022e2565b60606012805480602002602001604051908101604052809291908181526020015f905b8282101562002505575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620024ec57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620024ad5790505b5050505050815250508152602001906001019062002443565b50505050905090565b620025198262001ec6565b8151516200252d825f62000ca88462004c3a565b601c54601d5491935062002552916001600160a01b03918216918491165f1962004d0f565b62000c588183620010ff565b620025698262001ec6565b8151516200257d825f62000ca88462005220565b601c54601d54919350620025a2916001600160a01b03918216918491165f1962004d0f565b62000c58818362000991565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620025fb575f80fd5b505af11580156200260e573d5f803e3d5ffd5b505050505f6200261e82620052ce565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b1580156200266e575f80fd5b505af115801562002681573d5f803e3d5ffd5b505050505f620015c683620052ce565b6200269c8362001ec6565b825180516020820151604090920151909190620026bf855f62000ca88462004ff0565b601d54909550620026dc906001600160a01b031682858762004d0f565b62000e84838383886200395f565b620026f58262001ec6565b81515162002709825f62000ca88462004ff0565b601c54601d549193506200272e916001600160a01b03918216918491165f1962004d0f565b62000c58818362004449565b60606011805480602002602001604051908101604052809291908181526020015f905b8282101562002505578382905f5260205f200180546200277d9062006158565b80601f0160208091040260200160405190810160405280929190818152602001828054620027ab9062006158565b8015620027fa5780601f10620027d057610100808354040283529160200191620027fa565b820191905f5260205f20905b815481529060010190602001808311620027dc57829003601f168201915b5050505050815260200190600101906200275d565b6200281a8262001ec6565b81518051602082015160408301516060909301519192909162002843855f62000ca88562004ff0565b601d5490955062002861906001600160a01b031683865f1962004d0f565b62000e84848484848962000f7d565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620028bd575f80fd5b505af1158015620028d0573d5f803e3d5ffd5b505050505f620028e082620052ef565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002930575f80fd5b505af115801562002943573d5f803e3d5ffd5b505050505f6200295583878762004f84565b9050620010738183601b5462004aa4565b620029718162001ec6565b8051805160209091015162000c58828262003391565b620029928162001ec6565b80515162000c768162002a85565b60606013805480602002602001604051908101604052809291908181526020015f905b8282101562002505575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002a6c57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002a2d5790505b50505050508152505081526020019060010190620029c3565b60405163ca669fa760e01b81526001600160a01b03821660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002ad2575f80fd5b505af115801562002ae5573d5f803e3d5ffd5b50505050601d5f9054906101000a90046001600160a01b03166001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b3a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c76919062006082565b601d54600160a01b900460ff1662002c56575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002be3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c09919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562002c3e575f80fd5b505afa15801562002c51573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002ca3575f80fd5b505af115801562002cb6573d5f803e3d5ffd5b505050505f62002cc7828462004fbe565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002d17575f80fd5b505af115801562002d2a573d5f803e3d5ffd5b505050505f62002d3c83858662004a60565b905062000b7e8183601b5462004aa4565b601d54600160a01b900460ff1662002e43575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002dd0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002df6919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b15801562002e2b575f80fd5b505afa15801562002e3e573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002e90575f80fd5b505af115801562002ea3573d5f803e3d5ffd5b505050505f62002eb48284620049f2565b60405163ca669fa760e01b81526001600160a01b03851660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562002f04575f80fd5b505af115801562002f17573d5f803e3d5ffd5b505050505f62002f2983858662004f84565b905062000b7e8183601b5462004f09565b62002f458262001ec6565b81518051602082015160409092015190919062002f68845f62000ca8866200507d565b601c54601d5491955062002f8d916001600160a01b03918216918691165f1962004d0f565b620015d483838387620031c7565b62002fa68262001ec6565b81515162002fba825f62000ca88462005220565b601c54601d5491935062002fdf916001600160a01b03918216918491165f1962004d0f565b62000c58818362002d4d565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003038575f80fd5b505af11580156200304b573d5f803e3d5ffd5b505050505f6200305d82848562004f84565b601d54909150600160a01b900460ff1662003156575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620030e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003109919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200313e575f80fd5b505afa15801562003151573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620031a3575f80fd5b505af1158015620031b6573d5f803e3d5ffd5b505050505f62002d3c8385620049f2565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003214575f80fd5b505af115801562003227573d5f803e3d5ffd5b505050505f620032378262005310565b60405163ca669fa760e01b81526001600160a01b03871660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003287575f80fd5b505af11580156200329a573d5f803e3d5ffd5b505050505f620032ab838662004fbe565b905062000e848183601b5462004aa4565b60606010805480602002602001604051908101604052809291908181526020015f905b8282101562002505578382905f5260205f20018054620032ff9062006158565b80601f01602080910402602001604051908101604052809291908181526020018280546200332d9062006158565b80156200337c5780601f1062003352576101008083540402835291602001916200337c565b820191905f5260205f20905b8154815290600101906020018083116200335e57829003601f168201915b505050505081526020019060010190620032df565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620033de575f80fd5b505af1158015620033f1573d5f803e3d5ffd5b5050601d54604051636c82bbbf60e11b81526001600160a01b038581166004830152909116925063d905777e915060240162000c16565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003475575f80fd5b505af115801562003488573d5f803e3d5ffd5b505050505f6200349a82848562004a60565b601d54909150600160a01b900460ff1662003593575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003520573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003546919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200357b575f80fd5b505afa1580156200358e573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620035e0575f80fd5b505af1158015620035f3573d5f803e3d5ffd5b505050505f62000b6d8285620049f2565b6200360f8262001ec6565b81518051602082015160408301516060909301519192909162003638855f62000ca88562004c3a565b601d5490955062003656906001600160a01b031683865f1962004d0f565b62000e84848484848962002870565b5f8054610100900460ff16156200368457505f54610100900460ff1690565b5f5f80516020620097968339815191523b156200378157604080515f8051602062009796833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093525f92909162003707917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006192565b60408051601f19818403018152908290526200372391620061c4565b5f604051808303815f865af19150503d805f81146200375e576040519150601f19603f3d011682016040523d82523d5f602084013e62003763565b606091505b50915050808060200190518101906200377d9190620061e1565b9150505b919050565b60405163ca669fa760e01b81526001600160a01b03821660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620037d3575f80fd5b505af1158015620037e6573d5f803e3d5ffd5b50505050601d5f9054906101000a90046001600160a01b03166001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200383b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c76919062006202565b6200386c8362001ec6565b8251805160209091015162003887845f62000ca8856200507d565b601c54601d54919550620038ab916001600160a01b03918216918591168662004d0f565b620015d482828662001839565b620038c38262001ec6565b815151620038d7825f62000ca8846200507d565b601c54601d54919350620038fc916001600160a01b03918216918491165f1962004d0f565b62000c58818362002b60565b620039138362001ec6565b825180516020909101516200392e845f62000ca88562005220565b601c54601d5491955062003952916001600160a01b03918216918591168662004d0f565b620015d482828662004625565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa158015620039a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620039ce919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003a1c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003a42919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e9062003a7b9088908b90600401620060ae565b602060405180830381865afa15801562003a97573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003abd919062006082565b60405163ca669fa760e01b81526001600160a01b03891660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562003b0d575f80fd5b505af115801562003b20573d5f803e3d5ffd5b505050505f62003b3285888862004a60565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003b80573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003ba6919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003bf4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003c1a919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e9062003c53908c908f90600401620060ae565b602060405180830381865afa15801562003c6f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003c95919062006082565b905062003ca88262001bc38a89620060dc565b62003cb98362001b8b868a620060f2565b886001600160a01b03168b6001600160a01b03161415801562003cdd57505f198514155b1562003cf45762003cf48162001c048a88620060dc565b62003d59896001600160a01b03168c6001600160a01b0316148062003d1857508515155b8062003d2c57508815801562003d2c575084155b6040518060400160405280600e81526020016d1858d8d95cdcc818dbdb9d1c9bdb60921b81525062005331565b5050505050505050505050565b62003d718262001ec6565b8151805160209091015162000b7e828285620025ae565b62003d9c8160ff1660ee60ff801662004ccf565b601e546040519192505f916001600160a01b0390911690839062003dc09062005b38565b6001600160a01b03909216825260ff166020820152604001604051809103905ff08015801562003df2573d5f803e3d5ffd5b5090505f80516020620097b68339815191525f1c6001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003e3e575f80fd5b505af115801562003e51573d5f803e3d5ffd5b50505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003e92573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c58919062006220565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa15801562003f01573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003f27919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa15801562003f75573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003f9b919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e9062003fd49088908b90600401620060ae565b602060405180830381865afa15801562003ff0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004016919062006082565b60405163ca669fa760e01b81526001600160a01b03891660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004066575f80fd5b505af115801562004079573d5f803e3d5ffd5b505050505f6200408b85888862004f84565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620040d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620040ff919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156200414d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004173919062006082565b601d54604051636eb1769f60e11b81529192505f916001600160a01b039091169063dd62ed3e90620041ac908c908f90600401620060ae565b602060405180830381865afa158015620041c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620041ee919062006082565b9050620042018262001bc38689620060dc565b620042128362001b8b8a8a620060f2565b886001600160a01b03168b6001600160a01b0316141580156200423657505f198514155b156200424d576200424d8162001c048688620060dc565b62003d59896001600160a01b03168c6001600160a01b031614806200427157508515155b8062003d2c57508415801562003d2c575088156040518060400160405280600e81526020016d1858d8d95cdcc818dbdb9d1c9bdb60921b81525062005331565b620042bc8262001ec6565b8151805160209091015162000b7e828285620014e3565b620042de8162001ec6565b8051805160209091015162000c58828262001e2f565b6060600c805480602002602001604051908101604052809291908181526020018280548015620010f557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620010d6575050505050905090565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620043a1575f80fd5b505af1158015620043b4573d5f803e3d5ffd5b505050505f620043c4826200537b565b60405163ca669fa760e01b81526001600160a01b03871660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004414575f80fd5b505af115801562004427573d5f803e3d5ffd5b505050505f620044388386620049f2565b905062000e848183601b5462004f09565b60405163ca669fa760e01b81526001600160a01b03831660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004496575f80fd5b505af1158015620044a9573d5f803e3d5ffd5b505050505f620044bb82848562004a60565b601d54909150600160a01b900460ff16620045b4575f80516020620097b68339815191525f1c6001600160a01b0316634c63e5625f601d5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004541573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004567919062006082565b6040516001600160e01b031960e085901b168152911060048201526024015f6040518083038186803b1580156200459c575f80fd5b505afa158015620045af573d5f803e3d5ffd5b505050505b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004601575f80fd5b505af115801562004614573d5f803e3d5ffd5b505050505f62002f29838562004fbe565b601c546040516370a0823160e01b81526001600160a01b0385811660048301525f9216906370a0823190602401602060405180830381865afa1580156200466e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004694919062006082565b601d546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620046e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004708919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e9262004746928b9290911690600401620060ae565b602060405180830381865afa15801562004762573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004788919062006082565b60405163ca669fa760e01b81526001600160a01b03881660048201529091505f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b158015620047d8575f80fd5b505af1158015620047eb573d5f803e3d5ffd5b505050505f620047fc8587620049f2565b601c546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156200484a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004870919062006082565b601d546040516370a0823160e01b81526001600160a01b038a811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015620048be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620048e4919062006082565b601c54601d54604051636eb1769f60e11b81529293505f926001600160a01b039283169263dd62ed3e9262004922928f9290911690600401620060ae565b602060405180830381865afa1580156200493e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004964919062006082565b9050620049778362001b8b8a8a620060dc565b620049888262001bc38689620060f2565b5f19851462001c2f5762001c2f8162001c048a88620060dc565b620049ad8262001ec6565b815151620049c1825f62000ca88462004c3a565b601c54601d54919350620049e6916001600160a01b03918216918491165f1962004d0f565b62000c58818362002feb565b604051602481018390526001600160a01b03821660448201525f9062004a5790636e553f6560e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200539c565b90505b92915050565b604051602481018490526001600160a01b038084166044830152821660648201525f9062004a9a90635d043b2960e11b9060840162004a1f565b90505b9392505050565b8183111562000c58575f62004aba8385620060dc565b90508181111562000b7e575f805160206200977683398151915260405162004b1f9060208082526023908201527f4572726f723a2061203c3d7e2062206e6f7420736174697366696564205b75696040820152626e745d60e81b606082015260800190565b60405180910390a160408051818152600a818301526920202056616c7565206160b01b60608201526020810186905290515f80516020620097d68339815191529181900360800190a160408051818152600a91810191909152691010102b30b63ab2903160b11b6060820152602081018490525f80516020620097d6833981519152906080015b60405180910390a160408051818152600a8183015269204d61782044656c746160b01b60608201526020810184905290515f80516020620097d68339815191529181900360800190a160408051818152600a8183015269202020202044656c746160b01b60608201526020810183905290515f80516020620097d68339815191529181900360800190a162000b7e6200548c565b601d545f90600160a81b900460ff161562004c5757505f19919050565b601d546040516370a0823160e01b81526001600160a01b03848116600483015262004a5a9216906370a0823190602401602060405180830381865afa15801562004ca3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004cc9919062006082565b62005112565b5f62004cdd8484846200558d565b905062004a9d6040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262005778565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004d5c575f80fd5b505af115801562004d6f573d5f803e3d5ffd5b5050505062004d8084835f62005814565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620097968339815191529063ca669fa7906024015f604051808303815f87803b15801562004dcd575f80fd5b505af115801562004de0573d5f803e3d5ffd5b5050505062000b7e84838362005814565b80821162000c76575f805160206200977683398151915260405162004e519060208082526021908201527f4572726f723a2061203e2062206e6f7420736174697366696564205b75696e746040820152605d60f81b606082015260800190565b60405180910390a16040805181815260098183015268202056616c7565206160b81b60608201526020810184905290515f80516020620097d68339815191529181900360800190a1604080518181526009918101919091526810102b30b63ab2903160b91b6060820152602081018290525f80516020620097d6833981519152906080015b60405180910390a162000c766200548c565b5f62004a5a634cdad50660e01b8360405160240162004a1f91815260200190565b8183101562000c58575f62004f1f8484620060dc565b90508181111562000b7e575f805160206200977683398151915260405162004b1f9060208082526023908201527f4572726f723a2061203e3d7e2062206e6f7420736174697366696564205b75696040820152626e745d60e81b606082015260800190565b604051602481018490526001600160a01b038084166044830152821660648201525f9062004a9a90632d182be560e21b9060840162004a1f565b604051602481018390526001600160a01b03821660448201525f9062004a57906394bf804d60e01b9060640162004a1f565b601d545f90600160a81b900460ff16156200500d57505f19919050565b601d546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a08231906024015b602060405180830381865afa15801562005057573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004a5a919062006082565b601d545f90600160a81b900460ff16156200509a57505f19919050565b601c546040516370a0823160e01b81526001600160a01b03848116600483015262004a5a9216906370a0823190602401602060405180830381865afa158015620050e6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200510c919062006082565b620052ce565b5f62004a5a6307a2d13a60e01b8360405160240162004a1f91815260200190565b80821462000c76575f8051602062009776833981519152604051620051949060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290515f80516020620097d68339815191529181900360800190a160408051818152600a91810191909152690808080808149a59da1d60b21b6060820152602081018290525f80516020620097d68339815191529060800162004ed6565b601d545f90600160a81b900460ff16156200523d57505f19919050565b601c546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a08231906024016200503b565b5f6200527d8585620059a0565b905082811115620015d4577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051620052b991906200623e565b60405180910390a1620015d4858585620059c7565b5f62004a5a63c6e6f59260e01b8360405160240162004a1f91815260200190565b5f62004a5a630a28a47760e01b8360405160240162004a1f91815260200190565b5f62004a5a63b3d7f6b960e01b8360405160240162004a1f91815260200190565b8162000c76577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200536891906200623e565b60405180910390a162000c768262005ac4565b5f62004a5a63ef8b30f760e01b8360405160240162004a1f91815260200190565b601d546040515f91829182916001600160a01b031690620053bf908690620061c4565b5f604051808303815f865af19150503d805f8114620053fa576040519150601f19603f3d011682016040523d82523d5f602084013e620053ff565b606091505b5091509150811562005429578080602001905181019062005421919062006082565b949350505050565b604051632631f2b160e11b81525f60048201525f805160206200979683398151915290634c63e562906024015f6040518083038186803b1580156200546c575f80fd5b505afa1580156200547f573d5f803e3d5ffd5b505f979650505050505050565b5f80516020620097968339815191523b156200557d57604080515f8051602062009796833981519152602082018190526519985a5b195960d21b92820192909252600160608201525f91907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200551c929160200162006192565b60408051601f19818403018152908290526200553891620061c4565b5f604051808303815f865af19150503d805f811462005573576040519150601f19603f3d011682016040523d82523d5f602084013e62005578565b606091505b505050505b5f805461ff001916610100179055565b5f81831115620056095760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156200561a5750818411155b156200562857508262004a9d565b5f620056358484620060dc565b62005642906001620060f2565b9050600385111580156200565557508481115b156200567057620056678585620060f2565b91505062004a9d565b6200567e60035f19620060dc565b851015801562005699575062005696855f19620060dc565b81115b15620056b857620056ac855f19620060dc565b620056679084620060dc565b8285111562005717575f620056ce8487620060dc565b90505f620056dd83836200626e565b9050805f03620056f35784935050505062004a9d565b6001620057018288620060f2565b6200570d9190620060dc565b9350505062005770565b8385101562005770575f6200572d8686620060dc565b90505f6200573c83836200626e565b9050805f03620057525785935050505062004a9d565b6200575e8186620060dc565b6200576b906001620060f2565b935050505b509392505050565b5f6a636f6e736f6c652e6c6f676001600160a01b03168383604051602401620057a39291906200628e565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620057da9190620061c4565b5f60405180830381855afa9150503d805f811462000e84576040519150601f19603f3d011682016040523d82523d5f602084013e62000e84565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f92839290871691620058719190620061c4565b5f604051808303815f865af19150503d805f8114620058ac576040519150601f19603f3d011682016040523d82523d5f602084013e620058b1565b606091505b50604051632631f2b160e11b8152821515600482015291935091505f805160206200979683398151915290634c63e562906024015f6040518083038186803b158015620058fc575f80fd5b505afa1580156200590f573d5f803e3d5ffd5b505050505f81511115620015d45780515f805160206200979683398151915290634c63e562906200594a9084016020908101908501620061e1565b6040518263ffffffff1660e01b81526004016200596b911515815260200190565b5f6040518083038186803b15801562005982575f80fd5b505afa15801562005995573d5f803e3d5ffd5b505050505050505050565b5f818311620059bb57620059b58383620060dc565b62004a57565b62004a578284620060dc565b5f620059d48484620059a0565b90508181111562000b7e575f805160206200977683398151915260405162005a389060208082526022908201527f4572726f723a2061207e3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810186905290515f80516020620097d68339815191529181900360800190a160408051818152600a91810191909152690808080808149a59da1d60b21b6060820152602081018490525f80516020620097d68339815191529060800162004ba6565b8062002297575f805160206200977683398151915260405162005b189060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620022976200548c565b611a4180620062b283390190565b611a838062007cf383390190565b6001600160a01b038116811462002297575f80fd5b5f806040838503121562005b6d575f80fd5b823562005b7a8162005b46565b946020939093013593505050565b5f806040838503121562005b9a575f80fd5b823562005ba78162005b46565b9150602083013562005bb98162005b46565b809150509250929050565b6040516080810167ffffffffffffffff8111828210171562005bf457634e487b7160e01b5f52604160045260245ffd5b60405290565b5f82601f83011262005c0a575f80fd5b62005c1462005bc4565b80608084018581111562005c26575f80fd5b845b8181101562005c4257803584526020938401930162005c28565b509095945050505050565b5f6101a0828403121562005c5f575f80fd5b62005c6962005bc4565b905082601f83011262005c7a575f80fd5b62005c8462005bc4565b80608084018581111562005c96575f80fd5b845b8181101562005cbd57803562005cae8162005b46565b84526020938401930162005c98565b5081845262005ccd868262005bfa565b602085015250505062005ce583610100840162005bfa565b6040820152610180820135606082015292915050565b5f6101a0828403121562005d0d575f80fd5b62004a57838362005c4d565b5f806101c0838503121562005d2c575f80fd5b62005d38848462005c4d565b946101a0939093013593505050565b5f805f6101e0848603121562005d5b575f80fd5b62005d67858562005c4d565b956101a085013595506101c0909401359392505050565b5f805f805f60a0868803121562005d93575f80fd5b853562005da08162005b46565b9450602086013562005db28162005b46565b9350604086013562005dc48162005b46565b9250606086013562005dd68162005b46565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101562005e295783516001600160a01b03168352928401929184019160010162005e02565b50909695505050505050565b5f805f6060848603121562005e48575f80fd5b833562005e558162005b46565b9250602084013562005e678162005b46565b929592945050506040919091013590565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f805b8481101562005f1e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005f085783516001600160e01b0319168252928b019260019290920191908b019062005edc565b50978a0197955050509187019160010162005e9e565b50919998505050505050505050565b5f5b8381101562005f4957818101518382015260200162005f2f565b50505f910152565b5f815180845262005f6a81602086016020860162005f2d565b601f01601f19169290920160200192915050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b8281101562005fd557603f1988860301845262005fc285835162005f51565b9450928501929085019060010162005fa3565b5092979650505050505050565b5f6020828403121562005ff3575f80fd5b813562004a9d8162005b46565b5f805f806080858703121562006014575f80fd5b8435620060218162005b46565b93506020850135620060338162005b46565b92506040850135620060458162005b46565b9396929550929360600135925050565b60ff8116811462002297575f80fd5b5f6020828403121562006075575f80fd5b813562004a9d8162006055565b5f6020828403121562006093575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111562004a5a5762004a5a620060c8565b8082018082111562004a5a5762004a5a620060c8565b5f600182016200611c576200611c620060c8565b5060010190565b8082025f8212600160ff1b84141615620061415762006141620060c8565b818105831482151762004a5a5762004a5a620060c8565b600181811c908216806200616d57607f821691505b6020821081036200618c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160e01b03198316815281515f90620061b681600485016020870162005f2d565b919091016004019392505050565b5f8251620061d781846020870162005f2d565b9190910192915050565b5f60208284031215620061f2575f80fd5b8151801515811462004a9d575f80fd5b5f6020828403121562006213575f80fd5b815162004a9d8162005b46565b5f6020828403121562006231575f80fd5b815162004a9d8162006055565b60408152600560408201526422b93937b960d91b6060820152608060208201525f62004a57608083018462005f51565b5f826200628957634e487b7160e01b5f52601260045260245ffd5b500690565b604081525f620062a2604083018562005f51565b9050826020830152939250505056fe60c060405234801562000010575f80fd5b5060405162001a4138038062001a418339810160408190526200003391620001bb565b806040518060400160405280600b81526020016a455243343632364d6f636b60a81b8152506040518060400160405280600681526020016545343632364d60d01b81525081600390816200008891906200028a565b5060046200009782826200028a565b5050505f80620000ad83620000dc60201b60201c565b9150915081620000bf576012620000c1565b805b60ff1660a05250506001600160a01b03166080525062000398565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b03871691620001249162000352565b5f60405180830381855afa9150503d805f81146200015e576040519150601f19603f3d011682016040523d82523d5f602084013e62000163565b606091505b50915091508180156200017857506020815110155b15620001af575f8180602001905181019062000195919062000380565b905060ff8111620001ad576001969095509350505050565b505b505f9485945092505050565b5f60208284031215620001cc575f80fd5b81516001600160a01b0381168114620001e3575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200021357607f821691505b6020821081036200023257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000285575f81815260208120601f850160051c81016020861015620002605750805b601f850160051c820191505b8181101562000281578281556001016200026c565b5050505b505050565b81516001600160401b03811115620002a657620002a6620001ea565b620002be81620002b78454620001fe565b8462000238565b602080601f831160018114620002f4575f8415620002dc5750858301515b5f19600386901b1c1916600185901b17855562000281565b5f85815260208120601f198616915b82811015620003245788860151825594840194600190910190840162000303565b50858210156200034257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f82515f5b8181101562000373576020818601810151858301520162000357565b505f920191825250919050565b5f6020828403121562000391575f80fd5b5051919050565b60805160a051611672620003cf5f395f61057c01525f81816102850152818161041601528181610c8d0152610e7a01526116725ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c806370a08231116100fe578063b460af941161009e578063ce96cb771161006e578063ce96cb77146103c6578063d905777e146103d9578063dd62ed3e146103ec578063ef8b30f7146103b3575f80fd5b8063b460af941461038d578063ba087652146103a0578063c63d75b6146102c2578063c6e6f592146103b3575f80fd5b80639dc29fac116100d95780639dc29fac14610341578063a457c2d714610354578063a9059cbb14610367578063b3d7f6b91461037a575f80fd5b806370a08231146102fe57806394bf804d1461032657806395d89b4114610339575f80fd5b8063313ce56711610169578063402d267d11610144578063402d267d146102c257806340c10f19146102d65780634cdad506146101fa5780636e553f65146102eb575f80fd5b8063313ce5671461025e57806338d52e0f1461027857806339509351146102af575f80fd5b8063095ea7b3116101a4578063095ea7b31461020d5780630a28a4771461023057806318160ddd1461024357806323b872dd1461024b575f80fd5b806301e1d114146101ca57806306fdde03146101e557806307a2d13a146101fa575b5f80fd5b6101d26103ff565b6040519081526020015b60405180910390f35b6101ed61048c565b6040516101dc91906112f4565b6101d2610208366004611326565b61051c565b61022061021b366004611358565b61052d565b60405190151581526020016101dc565b6101d261023e366004611326565b610544565b6002546101d2565b610220610259366004611380565b610550565b610266610575565b60405160ff90911681526020016101dc565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016101dc565b6102206102bd366004611358565b6105a0565b6101d26102d03660046113b9565b505f1990565b6102e96102e4366004611358565b6105c1565b005b6101d26102f93660046113d2565b6105cf565b6101d261030c3660046113b9565b6001600160a01b03165f9081526020819052604090205490565b6101d26103343660046113d2565b6105f6565b6101ed61060f565b6102e961034f366004611358565b61061e565b610220610362366004611358565b610628565b610220610375366004611358565b6106ad565b6101d2610388366004611326565b6106ba565b6101d261039b3660046113fc565b6106c6565b6101d26103ae3660046113fc565b610740565b6101d26103c1366004611326565b6107b2565b6101d26103d43660046113b9565b6107bd565b6101d26103e73660046113b9565b6107df565b6101d26103fa366004611435565b6107fc565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610463573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610487919061145d565b905090565b60606003805461049b90611474565b80601f01602080910402602001604051908101604052809291908181526020018280546104c790611474565b80156105125780601f106104e957610100808354040283529160200191610512565b820191905f5260205f20905b8154815290600101906020018083116104f557829003601f168201915b5050505050905090565b5f610527825f610826565b92915050565b5f3361053a81858561085e565b5060019392505050565b5f610527826001610982565b5f3361055d8582856109b1565b610568858585610a29565b60019150505b9392505050565b5f610487817f00000000000000000000000000000000000000000000000000000000000000006114c0565b5f3361053a8185856105b283836107fc565b6105bc91906114d9565b61085e565b6105cb8282610bcb565b5050565b5f6105de565b60405180910390fd5b5f6105e8846107b2565b905061056e33848684610c88565b5f80610601846106ba565b905061056e33848387610c88565b60606004805461049b90611474565b6105cb8282610d1a565b5f338161063582866107fc565b9050838110156106955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d5565b6106a2828686840361085e565b506001949350505050565b5f3361053a818585610a29565b5f610527826001610826565b5f6106d0826107bd565b84111561071f5760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d61780060448201526064016105d5565b5f61072985610544565b90506107383385858885610e47565b949350505050565b5f61074a826107df565b8411156107995760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d617800000060448201526064016105d5565b5f6107a38561051c565b90506107383385858489610e47565b5f610527825f610982565b6001600160a01b0381165f90815260208190526040812054610527905f610826565b6001600160a01b0381165f90815260208190526040812054610527565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f61056e6108326103ff565b61083d9060016114d9565b6108485f600a6115cc565b60025461085591906114d9565b85919085610f07565b6001600160a01b0383166108c05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d5565b6001600160a01b0382166109215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d5565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f61056e61099182600a6115cc565b60025461099e91906114d9565b6109a66103ff565b6108559060016114d9565b5f6109bc84846107fc565b90505f198114610a235781811015610a165760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d5565b610a23848484840361085e565b50505050565b6001600160a01b038316610a8d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d5565b6001600160a01b038216610aef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d5565b6001600160a01b0383165f9081526020819052604090205481811015610b665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d5565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a23565b6001600160a01b038216610c215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d5565b8060025f828254610c3291906114d9565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b610cb47f0000000000000000000000000000000000000000000000000000000000000000853085610f62565b610cbe8382610bcb565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610d0c929190918252602082015260400190565b60405180910390a350505050565b6001600160a01b038216610d7a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d5565b6001600160a01b0382165f9081526020819052604090205481811015610ded5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d5565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610975565b505050565b826001600160a01b0316856001600160a01b031614610e6b57610e6b8386836109b1565b610e758382610d1a565b610ea07f00000000000000000000000000000000000000000000000000000000000000008584610fcd565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610ef8929190918252602082015260400190565b60405180910390a45050505050565b5f80610f14868686610ffd565b90506001836002811115610f2a57610f2a6115da565b148015610f4657505f8480610f4157610f416115ee565b868809115b15610f5957610f566001826114d9565b90505b95945050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a239085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526110e2565b6040516001600160a01b038316602482015260448101829052610e4290849063a9059cbb60e01b90606401610f96565b5f80805f19858709858702925082811083820303915050805f036110345783828161102a5761102a6115ee565b049250505061056e565b80841161107b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016105d5565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f611136826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111b59092919063ffffffff16565b905080515f14806111565750808060200190518101906111569190611602565b610e425760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d5565b606061073884845f85855f80866001600160a01b031685876040516111da9190611621565b5f6040518083038185875af1925050503d805f8114611214576040519150601f19603f3d011682016040523d82523d5f602084013e611219565b606091505b509150915061122a87838387611235565b979650505050505050565b606083156112a35782515f0361129c576001600160a01b0385163b61129c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d5565b5081610738565b61073883838151156112b85781518083602001fd5b8060405162461bcd60e51b81526004016105d591906112f4565b5f5b838110156112ec5781810151838201526020016112d4565b50505f910152565b602081525f82518060208401526113128160408501602087016112d2565b601f01601f19169190910160400192915050565b5f60208284031215611336575f80fd5b5035919050565b80356001600160a01b0381168114611353575f80fd5b919050565b5f8060408385031215611369575f80fd5b6113728361133d565b946020939093013593505050565b5f805f60608486031215611392575f80fd5b61139b8461133d565b92506113a96020850161133d565b9150604084013590509250925092565b5f602082840312156113c9575f80fd5b61056e8261133d565b5f80604083850312156113e3575f80fd5b823591506113f36020840161133d565b90509250929050565b5f805f6060848603121561140e575f80fd5b8335925061141e6020850161133d565b915061142c6040850161133d565b90509250925092565b5f8060408385031215611446575f80fd5b61144f8361133d565b91506113f36020840161133d565b5f6020828403121561146d575f80fd5b5051919050565b600181811c9082168061148857607f821691505b6020821081036114a657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff8181168382160190811115610527576105276114ac565b80820180821115610527576105276114ac565b600181815b8085111561152657815f190482111561150c5761150c6114ac565b8085161561151957918102915b93841c93908002906114f1565b509250929050565b5f8261153c57506001610527565b8161154857505f610527565b816001811461155e576002811461156857611584565b6001915050610527565b60ff841115611579576115796114ac565b50506001821b610527565b5060208310610133831016604e8410600b84101617156115a7575081810a610527565b6115b183836114ec565b805f19048211156115c4576115c46114ac565b029392505050565b5f61056e60ff84168361152e565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f60208284031215611612575f80fd5b8151801515811461056e575f80fd5b5f82516116328184602087016112d2565b919091019291505056fea2646970667358221220bfeeb6aac754bec2039c76fb269ad9ee8fdb6fb56212bf73de566b9a477d40af64736f6c6343000814003360e060405234801562000010575f80fd5b5060405162001a8338038062001a838339810160408190526200003391620001c8565b80826040518060400160405280600e81526020016d135e48151bdad95b8815985d5b1d60921b8152506040518060400160405280600581526020016426aa25a72b60d91b81525081600390816200008b9190620002b3565b5060046200009a8282620002b3565b5050505f80620000b083620000e960201b60201c565b9150915081620000c2576012620000c4565b805b60ff90811660a0526001600160a01b0390931660805250501660c05250620003c19050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169162000131916200037b565b5f60405180830381855afa9150503d805f81146200016b576040519150601f19603f3d011682016040523d82523d5f602084013e62000170565b606091505b50915091508180156200018557506020815110155b15620001bc575f81806020019051810190620001a29190620003a9565b905060ff8111620001ba576001969095509350505050565b505b505f9485945092505050565b5f8060408385031215620001da575f80fd5b82516001600160a01b0381168114620001f1575f80fd5b602084015190925060ff8116811462000208575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200023c57607f821691505b6020821081036200025b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002ae575f81815260208120601f850160051c81016020861015620002895750805b601f850160051c820191505b81811015620002aa5782815560010162000295565b5050505b505050565b81516001600160401b03811115620002cf57620002cf62000213565b620002e781620002e0845462000227565b8462000261565b602080601f8311600181146200031d575f8415620003055750858301515b5f19600386901b1c1916600185901b178555620002aa565b5f85815260208120601f198616915b828110156200034d578886015182559484019460019091019084016200032c565b50858210156200036b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f82515f5b818110156200039c576020818601810151858301520162000380565b505f920191825250919050565b5f60208284031215620003ba575f80fd5b5051919050565b60805160a05160c0516116746200040f5f395f818161052e015281816107fd015261096501525f61054f01525f8181610260015281816103c901528181610bca0152610c8a01526116745ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806370a08231116100f3578063ba08765211610093578063ce96cb771161006e578063ce96cb7714610379578063d905777e1461038c578063dd62ed3e1461039f578063ef8b30f714610366575f80fd5b8063ba08765214610353578063c63d75b61461029d578063c6e6f59214610366575f80fd5b8063a457c2d7116100ce578063a457c2d714610307578063a9059cbb1461031a578063b3d7f6b91461032d578063b460af9414610340575f80fd5b806370a08231146102c457806394bf804d146102ec57806395d89b41146102ff575f80fd5b806323b872dd1161015e5780633950935111610139578063395093511461028a578063402d267d1461029d5780634cdad506146101d55780636e553f65146102b1575f80fd5b806323b872dd14610226578063313ce5671461023957806338d52e0f14610253575f80fd5b806301e1d114146101a557806306fdde03146101c057806307a2d13a146101d5578063095ea7b3146101e85780630a28a4771461020b57806318160ddd1461021e575b5f80fd5b6101ad6103b2565b6040519081526020015b60405180910390f35b6101c861043f565b6040516101b791906112f6565b6101ad6101e3366004611328565b6104cf565b6101fb6101f636600461135a565b6104e0565b60405190151581526020016101b7565b6101ad610219366004611328565b6104f7565b6002546101ad565b6101fb610234366004611382565b610503565b610241610528565b60405160ff90911681526020016101b7565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016101b7565b6101fb61029836600461135a565b610573565b6101ad6102ab3660046113bb565b505f1990565b6101ad6102bf3660046113d4565b610594565b6101ad6102d23660046113bb565b6001600160a01b03165f9081526020819052604090205490565b6101ad6102fa3660046113d4565b6105bb565b6101c86105d4565b6101fb61031536600461135a565b6105e3565b6101fb61032836600461135a565b610668565b6101ad61033b366004611328565b610675565b6101ad61034e3660046113fe565b610681565b6101ad6103613660046113fe565b6106fb565b6101ad610374366004611328565b61076d565b6101ad6103873660046113bb565b610778565b6101ad61039a3660046113bb565b61079a565b6101ad6103ad366004611437565b6107b7565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610416573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043a919061145f565b905090565b60606003805461044e90611476565b80601f016020809104026020016040519081016040528092919081815260200182805461047a90611476565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f6104da825f6107e1565b92915050565b5f336104ed818585610839565b5060019392505050565b5f6104da82600161095c565b5f336105108582856109ab565b61051b858585610a23565b60019150505b9392505050565b5f61043a7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114c2565b5f336104ed81858561058583836107b7565b61058f91906114db565b610839565b5f6105a3565b60405180910390fd5b5f6105ad8461076d565b905061052133848684610bc5565b5f806105c684610675565b905061052133848387610bc5565b60606004805461044e90611476565b5f33816105f082866107b7565b9050838110156106505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059a565b61065d8286868403610839565b506001949350505050565b5f336104ed818585610a23565b5f6104da8260016107e1565b5f61068b82610778565b8411156106da5760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d617800604482015260640161059a565b5f6106e4856104f7565b90506106f33385858885610c57565b949350505050565b5f6107058261079a565b8411156107545760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d6178000000604482015260640161059a565b5f61075e856104cf565b90506106f33385858489610c57565b5f6104da825f61095c565b6001600160a01b0381165f908152602081905260408120546104da905f6107e1565b6001600160a01b0381165f908152602081905260408120546104da565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f6105216107ed6103b2565b6107f89060016114db565b6108237f0000000000000000000000000000000000000000000000000000000000000000600a6115ce565b60025461083091906114db565b85919085610d17565b6001600160a01b03831661089b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059a565b6001600160a01b0382166108fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61052161098b7f0000000000000000000000000000000000000000000000000000000000000000600a6115ce565b60025461099891906114db565b6109a06103b2565b6108309060016114db565b5f6109b684846107b7565b90505f198114610a1d5781811015610a105760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161059a565b610a1d8484848403610839565b50505050565b6001600160a01b038316610a875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059a565b6001600160a01b038216610ae95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059a565b6001600160a01b0383165f9081526020819052604090205481811015610b605760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059a565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a1d565b610bf17f0000000000000000000000000000000000000000000000000000000000000000853085610d77565b610bfb8382610de2565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610c49929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610c7b57610c7b8386836109ab565b610c858382610e9f565b610cb07f00000000000000000000000000000000000000000000000000000000000000008584610fcf565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610d08929190918252602082015260400190565b60405180910390a45050505050565b5f80610d24868686610fff565b90506001836002811115610d3a57610d3a6115dc565b148015610d5657505f8480610d5157610d516115f0565b868809115b15610d6957610d666001826114db565b90505b95945050505050565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a1d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526110e4565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161059a565b8060025f828254610e4991906114db565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610eff5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161059a565b6001600160a01b0382165f9081526020819052604090205481811015610f725760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161059a565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040516001600160a01b038316602482015260448101829052610d7290849063a9059cbb60e01b90606401610dab565b5f80805f19858709858702925082811083820303915050805f036110365783828161102c5761102c6115f0565b0492505050610521565b80841161107d5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161059a565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f611138826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111b79092919063ffffffff16565b905080515f14806111585750808060200190518101906111589190611604565b610d725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161059a565b60606106f384845f85855f80866001600160a01b031685876040516111dc9190611623565b5f6040518083038185875af1925050503d805f8114611216576040519150601f19603f3d011682016040523d82523d5f602084013e61121b565b606091505b509150915061122c87838387611237565b979650505050505050565b606083156112a55782515f0361129e576001600160a01b0385163b61129e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161059a565b50816106f3565b6106f383838151156112ba5781518083602001fd5b8060405162461bcd60e51b815260040161059a91906112f6565b5f5b838110156112ee5781810151838201526020016112d6565b50505f910152565b602081525f82518060208401526113148160408501602087016112d4565b601f01601f19169190910160400192915050565b5f60208284031215611338575f80fd5b5035919050565b80356001600160a01b0381168114611355575f80fd5b919050565b5f806040838503121561136b575f80fd5b6113748361133f565b946020939093013593505050565b5f805f60608486031215611394575f80fd5b61139d8461133f565b92506113ab6020850161133f565b9150604084013590509250925092565b5f602082840312156113cb575f80fd5b6105218261133f565b5f80604083850312156113e5575f80fd5b823591506113f56020840161133f565b90509250929050565b5f805f60608486031215611410575f80fd5b833592506114206020850161133f565b915061142e6040850161133f565b90509250925092565b5f8060408385031215611448575f80fd5b6114518361133f565b91506113f56020840161133f565b5f6020828403121561146f575f80fd5b5051919050565b600181811c9082168061148a57607f821691505b6020821081036114a857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156104da576104da6114ae565b808201808211156104da576104da6114ae565b600181815b8085111561152857815f190482111561150e5761150e6114ae565b8085161561151b57918102915b93841c93908002906114f3565b509250929050565b5f8261153e575060016104da565b8161154a57505f6104da565b8160018114611560576002811461156a57611586565b60019150506104da565b60ff84111561157b5761157b6114ae565b50506001821b6104da565b5060208310610133831016604e8410600b84101617156115a9575081810a6104da565b6115b383836114ee565b805f19048211156115c6576115c66114ae565b029392505050565b5f61052160ff841683611530565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f60208284031215611614575f80fd5b81518015158114610521575f80fd5b5f82516116348184602087016112d4565b919091019291505056fea2646970667358221220b5818c79fec6a05bad7a8093e02196550623f2b16b44d26704c0b4cc008e285864736f6c6343000814003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f500000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12db2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8a26469706673582212205f46b89703a2f4896c571504ecdce7f4ca7739551beee545de87dd7ff12bf4d864736f6c63430008140033","sourceMap":"734:838:305:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11881:355:265;;;;;;:::i;:::-;;:::i;:::-;;4191:139;;;;;;:::i;:::-;;:::i;2232:153:266:-;;;;;;:::i;:::-;;:::i;6278:555::-;;;;;;:::i;:::-;;:::i;829:230:305:-;;;:::i;5865:407:266:-;;;;;;:::i;:::-;;:::i;10361:320:265:-;;;;;;:::i;:::-;;:::i;3124:216:266:-;;;;;;:::i;:::-;;:::i;2161:134:276:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14307:353:265;;;;;;:::i;:::-;;:::i;9118:319:266:-;;;;;;:::i;:::-;;:::i;7967:135:265:-;;;;;;:::i;:::-;;:::i;2930:133:276:-;;;:::i;2631:141::-;;;:::i;9762:315:266:-;;;;;;:::i;:::-;;:::i;3692:419:265:-;;;;;;:::i;:::-;;:::i;3346:415:266:-;;;;;;:::i;:::-;;:::i;5184:211::-;;;;;;:::i;:::-;;:::i;13505:353:265:-;;;;;;:::i;:::-;;:::i;6854:963::-;;;;;;:::i;:::-;;:::i;7946:471:266:-;;;;;;:::i;:::-;;:::i;6100:133:265:-;;;;;;:::i;:::-;;:::i;712:789:266:-;;;;;;:::i;:::-;;:::i;1534:664::-;;;;;;:::i;:::-;;:::i;2447:178:276:-;;;:::i;:::-;;;;;;;:::i;10400:319:266:-;;;;;;:::i;:::-;;:::i;8462:320::-;;;;;;:::i;:::-;;:::i;3181:419:265:-;;;;;;:::i;:::-;;:::i;7539:401:266:-;;;;;;:::i;:::-;;:::i;9443:313::-;;;;;;:::i;:::-;;:::i;2301:140:276:-;;;:::i;:::-;;;;;;;:::i;7081:452:266:-;;;;;;:::i;:::-;;:::i;8408:326:265:-;;;;;;:::i;:::-;;:::i;6868:207:266:-;;;;;;:::i;:::-;;:::i;2391:165::-;;;;;;:::i;:::-;;:::i;2778:146:276:-;;;:::i;2944:115:265:-;;;;;;:::i;:::-;;:::i;13920:351::-;;;;;;:::i;:::-;;:::i;12303:361::-;;;;;;:::i;:::-;;:::i;4380:406:266:-;;;;;;:::i;:::-;;:::i;8788:324::-;;;;;;:::i;:::-;;:::i;14727:361:265:-;;;;;;:::i;:::-;;:::i;6520:316::-;;;;;;:::i;:::-;;:::i;1866:141:276:-;;;:::i;9937:131:265:-;;;;;;:::i;:::-;;:::i;12701:355::-;;;;;;:::i;:::-;;:::i;5401:458:266:-;;;;;;:::i;:::-;;:::i;1819:584:268:-;;;:::i;:::-;;;9294:14:310;;9287:22;9269:41;;9257:2;9242:18;1819:584:268;9129:187:310;2790:103:265;;;;;;:::i;:::-;;:::i;4792:355:266:-;;;;;;:::i;:::-;;:::i;10083:311::-;;;;;;:::i;:::-;;:::i;3767:364::-;;;;;;:::i;:::-;;:::i;10701:1099:265:-;;;;;;:::i;:::-;;:::i;2592:245:266:-;;;;;;:::i;:::-;;:::i;1170:400:305:-;;;;;;:::i;:::-;;:::i;8756:1103:265:-;;;;;;:::i;:::-;;:::i;2843:245:266:-;;;;;;:::i;:::-;;:::i;4164:210::-;;;;;;:::i;:::-;;:::i;2013:142:276:-;;;:::i;4630:406:265:-;;;;;;:::i;:::-;;:::i;13118:351::-;;;;;;:::i;:::-;;:::i;1572:26:268:-;;;;;;;;;5057:969:265;;;;;;:::i;:::-;;:::i;10725:325:266:-;;;;;;:::i;:::-;;:::i;11881:355:265:-;11964:16;;-1:-1:-1;;;11964:16:265;;;;11959:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;11982:9:265;;12024:1;11999:7;;;;;;;;;-1:-1:-1;;;;;11999:7:265;-1:-1:-1;;;;;11992:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11982:44;;-1:-1:-1;;;;;;11982:44:265;;;;;;;11992:33;-1:-1:-1;11982:44:265;;;9269:41:310;9242:18;;11982:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11959:67;12036:16;;-1:-1:-1;;;12036:16:265;;-1:-1:-1;;;;;10041:32:310;;12036:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;12036:8:265;;;9996:18:310;;12036:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12054:11;12068:29;12082:6;12090;12068:13;:29::i;:::-;12107:16;;-1:-1:-1;;;12107:16:265;;-1:-1:-1;;;;;10041:32:310;;12107:16:265;;;10023:51:310;12054:43:265;;-1:-1:-1;;;;;;;;;;;;12107:8:265;;;9996:18:310;;12107:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12125:12;12140:36;12153:6;12161;12169;12140:12;:36::i;:::-;12125:51;;12186:43;12204:7;12213:6;12221:7;;12186:17;:43::i;:::-;11949:287;;11881:355;;:::o;4191:139::-;4267:16;;-1:-1:-1;;;4267:16:265;;-1:-1:-1;;;;;10041:32:310;;4267:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;4267:8:265;;;9996:18:310;;4267:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4294:7:265;;4285:38;;-1:-1:-1;;;4285:38:265;;-1:-1:-1;;;;;10041:32:310;;;4285:38:265;;;10023:51:310;4294:7:265;;;;-1:-1:-1;4285:28:265;;-1:-1:-1;9996:18:310;;4285:38:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4191:139;;:::o;2232:153:266:-;2295:16;2306:4;2295:10;:16::i;:::-;2338:9;;:12;2360:18;2338:12;2360:10;:18::i;:::-;2285:100;2232:153;:::o;6278:555::-;6361:16;6372:4;6361:10;:16::i;:::-;6406:9;;:12;;;6447;;;6488;;;;;6406;;6447;6519:38;6525:6;6387:14;6536:20;6488:12;6536:13;:20::i;:::-;6519:5;:38::i;:::-;6567:26;;-1:-1:-1;;;6567:26:266;;-1:-1:-1;;;;;6577:15:266;;;;;;;;6567:26;;;9269:41:310;6510:47:266;;-1:-1:-1;;;;;;;;;;;;6567:9:266;;;9242:18:310;;6567:26:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6603:21:266;;-1:-1:-1;;;6603:21:266;;6613:10;;;6603:21;;;9269:41:310;-1:-1:-1;;;;;;;;;;;6603:9:266;-1:-1:-1;6603:9:266;;-1:-1:-1;9242:18:310;;6603:21:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6643:7:266;;6634:35;;-1:-1:-1;;;;;;6643:7:266;;-1:-1:-1;6652:5:266;6659:6;6643:7;6634:8;:35::i;:::-;6679:16;;-1:-1:-1;;;6679:16:266;;-1:-1:-1;;;;;10041:32:310;;6679:16:266;;;10023:51:310;-1:-1:-1;;;;;;;;;;;6679:8:266;;;9996:18:310;;6679:16:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6720:7:266;;6711:51;;-1:-1:-1;;;6711:51:266;;;;;10419:25:310;;;-1:-1:-1;;;;;10518:15:310;;;10498:18;;;10491:43;10570:15;;;10550:18;;;10543:43;6697:11:266;;-1:-1:-1;6720:7:266;;;;-1:-1:-1;6711:26:266;;10392:18:310;;6711:51:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6697:65;;6772:19;6781:6;6789:1;6772:8;:19::i;:::-;6351:482;;;;6278:555;;:::o;829:230:305:-;895:11;;872:12;:35;;-1:-1:-1;;;;;;872:35:305;-1:-1:-1;;;;;895:11:305;;;872:35;;;;;935:29;;;;;:::i;:::-;-1:-1:-1;;;;;10041:32:310;;;10023:51;;10011:2;9996:18;935:29:305;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:7:305;:48;;:7;975;:11;-1:-1:-1;;;;;;;;;;996:23:305;;;-1:-1:-1;;;;;917:48:305;;;;996:23;;;;-1:-1:-1;;;996:23:305;1029;;;;-1:-1:-1;;;1029:23:305;;;829:230::o;5865:407:266:-;5960:16;5971:4;5960:10;:16::i;:::-;6005:9;;:12;;;6046;;;6087;;;;;6005;;6046;6118:38;6124:6;5986:14;6135:20;6087:12;6135:13;:20::i;6118:38::-;6175:7;;6109:47;;-1:-1:-1;6166:43:266;;-1:-1:-1;;;;;6175:7:266;6184:5;6191:6;6199:9;6166:8;:43::i;:::-;6219:46;6233:6;6241:8;6251:5;6258:6;6219:13;:46::i;10361:320:265:-;10483:15;;-1:-1:-1;;;10483:15:265;;-1:-1:-1;;;;;10041:32:310;;10483:15:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;10483:8:265;;;9996:18:310;;10483:15:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10500:12;10515:27;10535:6;10515:19;:27::i;:::-;10552:16;;-1:-1:-1;;;10552:16:265;;-1:-1:-1;;;;;10041:32:310;;10552:16:265;;;10023:51:310;10500:42:265;;-1:-1:-1;;;;;;;;;;;;10552:8:265;;;9996:18:310;;10552:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10570:11;10584:37;10597:6;10605:8;10615:5;10584:12;:37::i;:::-;10570:51;;10631:43;10649:6;10657:7;10666;;10631:17;:43::i;:::-;10473:208;;10361:320;;;;;:::o;3124:216:266:-;3192:16;3203:4;3192:10;:16::i;:::-;3237:9;;:12;;;3278;;;;3300:33;3237:12;3278;3300:15;:33::i;2161:134:276:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:276;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;14307:353:265:-;14384:16;;-1:-1:-1;;;14384:16:265;;-1:-1:-1;;;;;10041:32:310;;14384:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;14384:8:265;;;9996:18:310;;14384:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14402:11;14416:38;14431:6;14439;14447;14416:14;:38::i;:::-;14469:16;;14402:52;;-1:-1:-1;;;;14469:16:265;;;;14464:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;14487:9:265;;14529:1;14504:7;;;;;;;;;-1:-1:-1;;;;;14504:7:265;-1:-1:-1;;;;;14497:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14487:44;;-1:-1:-1;;;;;;14487:44:265;;;;;;;14497:33;-1:-1:-1;14487:44:265;;;9269:41:310;9242:18;;14487:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14464:67;14541:16;;-1:-1:-1;;;14541:16:265;;-1:-1:-1;;;;;10041:32:310;;14541:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;14541:8:265;;;9996:18:310;;14541:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14559:12;14574:26;14585:6;14593;14574:10;:26::i;:::-;14559:41;;14610:43;14628:7;14637:6;14645:7;;14610:17;:43::i;9118:319:266:-;9206:16;9217:4;9206:10;:16::i;:::-;9249:9;;:12;9280:37;9286:6;9232:14;9297:19;9249:12;9297:11;:19::i;9280:37::-;9336:12;;9358:7;;9271:46;;-1:-1:-1;9327:55:266;;-1:-1:-1;;;;;9336:12:266;;;;9350:6;;9358:7;-1:-1:-1;;9327:8:266;:55::i;:::-;9392:38;9415:6;9423;9392:22;:38::i;7967:135:265:-;8041:16;;-1:-1:-1;;;8041:16:265;;-1:-1:-1;;;;;10041:32:310;;8041:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;8041:8:265;;;9996:18:310;;8041:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8068:7:265;;8059:36;;-1:-1:-1;;;8059:36:265;;-1:-1:-1;;;;;10041:32:310;;;8059:36:265;;;10023:51:310;8068:7:265;;;;-1:-1:-1;8059:29:265;;-1:-1:-1;9996:18:310;;8059:36:265;9877:203:310;2930:133:276;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:276;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:276;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;9762:315:266:-;9849:16;9860:4;9849:10;:16::i;:::-;9892:9;;:12;9923:35;9929:6;9875:14;9940:17;9892:12;9940:9;:17::i;9923:35::-;9977:12;;9999:7;;9914:44;;-1:-1:-1;9968:55:266;;-1:-1:-1;;;;;9977:12:266;;;;9991:6;;9999:7;-1:-1:-1;;9968:8:266;:55::i;:::-;10033:37;10055:6;10063;10033:21;:37::i;3692:419:265:-;3786:17;;-1:-1:-1;;;3786:17:265;;-1:-1:-1;;;;;10041:32:310;;3786:17:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;3786:8:265;;;9996:18:310;;3786:17:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:9;3817:29;3839:6;3817:21;:29::i;:::-;3935:17;;-1:-1:-1;;;3935:17:265;;-1:-1:-1;;;;;10041:32:310;;3935:17:265;;;10023:51:310;3805:41:265;;-1:-1:-1;;;;;;;;;;;;3935:8:265;;;9996:18:310;;3935:17:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3954:9;3966:29;3988:6;3966:21;:29::i;:::-;3954:41;;4084:20;4093:4;4099;4084:8;:20::i;:::-;3776:335;;3692:419;;;:::o;3346:415:266:-;3431:16;3442:4;3431:10;:16::i;:::-;3476:9;;:12;;;3517;;;3558;;;;;3476;;3517;3589:38;3595:6;3457:14;3606:20;3476:12;3606;:20::i;3589:38::-;3646:12;;3668:7;;3580:47;;-1:-1:-1;3637:55:266;;-1:-1:-1;;;;;3646:12:266;;;;3660:6;;3668:7;-1:-1:-1;;3637:8:266;:55::i;:::-;3702:52;3722:6;3730:8;3740:5;3747:6;3702:19;:52::i;5184:211::-;5253:16;5264:4;5253:10;:16::i;:::-;5296:9;;:12;;;5335;;;;5357:31;5296:12;5335;5357:16;:31::i;13505:353:265:-;13587:16;;-1:-1:-1;;;13587:16:265;;;;13582:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;13605:9:265;;13647:1;13622:7;;;;;;;;;-1:-1:-1;;;;;13622:7:265;-1:-1:-1;;;;;13615:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13605:44;;-1:-1:-1;;;;;;13605:44:265;;;;;;;13615:33;-1:-1:-1;13605:44:265;;;9269:41:310;9242:18;;13605:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13582:67;13659:16;;-1:-1:-1;;;13659:16:265;;-1:-1:-1;;;;;10041:32:310;;13659:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;13659:8:265;;;9996:18:310;;13659:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13677:11;13691:26;13702:6;13710;13691:10;:26::i;:::-;13727:16;;-1:-1:-1;;;13727:16:265;;-1:-1:-1;;;;;10041:32:310;;13727:16:265;;;10023:51:310;13677:40:265;;-1:-1:-1;;;;;;;;;;;;13727:8:265;;;9996:18:310;;13727:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13745:12;13760:38;13775:6;13783;13791;13760:14;:38::i;6854:963::-;6966:12;;6959:38;;-1:-1:-1;;;6959:38:265;;-1:-1:-1;;;;;10041:32:310;;;6959:38:265;;;10023:51:310;6937:19:265;;6966:12;;6959:30;;9996:18:310;;6959:38:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7038:7;;7031:35;;-1:-1:-1;;;7031:35:265;;-1:-1:-1;;;;;10041:32:310;;;7031:35:265;;;10023:51:310;6937:60:265;;-1:-1:-1;7007:21:265;;7038:7;;;;7031:25;;9996:18:310;;7031:35:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7103:12;;7135:7;;7096:47;;-1:-1:-1;;;7096:47:265;;7007:59;;-1:-1:-1;7076:17:265;;-1:-1:-1;;;;;7103:12:265;;;;7096:30;;:47;;7127:6;;7135:7;;;;7096:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7154:16;;-1:-1:-1;;;7154:16:265;;-1:-1:-1;;;;;10041:32:310;;7154:16:265;;;10023:51:310;7076:67:265;;-1:-1:-1;;;;;;;;;;;;7154:8:265;;;9996:18:310;;7154:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7172:11;7186:28;7197:6;7205:8;7186:10;:28::i;:::-;7254:12;;7247:38;;-1:-1:-1;;;7247:38:265;;-1:-1:-1;;;;;10041:32:310;;;7247:38:265;;;10023:51:310;7172:42:265;;-1:-1:-1;7225:19:265;;7254:12;;;;7247:30;;9996:18:310;;7247:38:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7326:7;;7319:35;;-1:-1:-1;;;7319:35:265;;-1:-1:-1;;;;;10041:32:310;;;7319:35:265;;;10023:51:310;7225:60:265;;-1:-1:-1;7295:21:265;;7326:7;;;;7319:25;;9996:18:310;;7319:35:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7391:12;;7423:7;;7384:47;;-1:-1:-1;;;7384:47:265;;7295:59;;-1:-1:-1;7364:17:265;;-1:-1:-1;;;;;7391:12:265;;;;7384:30;;:47;;7415:6;;7423:7;;;;7384:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7364:67;-1:-1:-1;7442:76:265;7460:14;7476:23;7493:6;7476:14;:23;:::i;:::-;7501:7;;7442:76;;;;;;;;;;;;;-1:-1:-1;;;7442:76:265;;;:17;:76::i;:::-;7608:80;7626:16;7644:25;7663:6;7644:16;:25;:::i;:::-;7671:7;;7608:80;;;;;;;;;;;;;-1:-1:-1;;;7608:80:265;;;:17;:80::i;:::-;-1:-1:-1;;7702:12:265;:30;7698:112;;7734:76;7752:12;7766:21;7781:6;7766:12;:21;:::i;:::-;7789:7;;7734:76;;;;;;;;;;;;;-1:-1:-1;;;7734:76:265;;;:17;:76::i;:::-;6927:890;;;;;;;6854:963;;;:::o;7946:471:266:-;8027:16;8038:4;8027:10;:16::i;:::-;8072:9;;:12;;;8113;;;8154;;;;;8072;;8113;8185:36;8191:6;8053:14;8202:18;8154:12;8202:11;:18::i;8185:36::-;8231:26;;-1:-1:-1;;;8231:26:266;;-1:-1:-1;;;;;8241:15:266;;;;;;;;8231:26;;;9269:41:310;8176:45:266;;-1:-1:-1;;;;;;;;;;;;8231:9:266;;;9242:18:310;;8231:26:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8267:21:266;;-1:-1:-1;;;8267:21:266;;8277:10;;;8267:21;;;9269:41:310;-1:-1:-1;;;;;;;;;;;8267:9:266;-1:-1:-1;8267:9:266;;-1:-1:-1;9242:18:310;;8267:21:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8307:7:266;;8298:35;;-1:-1:-1;;;;;;8307:7:266;;-1:-1:-1;8316:5:266;8323:6;8307:7;8298:8;:35::i;:::-;8343:16;;-1:-1:-1;;;8343:16:266;;-1:-1:-1;;;;;10041:32:310;;8343:16:266;;;10023:51:310;-1:-1:-1;;;;;;;;;;;8343:8:266;;;9996:18:310;;8343:16:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8370:7:266;;8361:49;;-1:-1:-1;;;8361:49:266;;;;;10419:25:310;;;-1:-1:-1;;;;;10518:15:310;;;10498:18;;;10491:43;10570:15;;;10550:18;;;10543:43;8370:7:266;;;;-1:-1:-1;8361:24:266;;-1:-1:-1;10392:18:310;;8361:49:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6100:133:265:-;6173:16;;-1:-1:-1;;;6173:16:265;;-1:-1:-1;;;;;10041:32:310;;6173:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;6173:8:265;;;9996:18:310;;6173:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6200:7:265;;6191:35;;-1:-1:-1;;;6191:35:265;;-1:-1:-1;;;;;10041:32:310;;;6191:35:265;;;10023:51:310;6200:7:265;;;;-1:-1:-1;6191:25:265;;-1:-1:-1;9996:18:310;;6191:35:265;9877:203:310;712:789:266;844:6;839:588;349:1;856;:5;839:588;;;897:9;;882:12;;907:1;897:12;;;;;;;:::i;:::-;;;;;923:23;;-1:-1:-1;;;923:23:266;;-1:-1:-1;;;;;11267:19:266;;;:24;923:23;;;9269:41:310;897:12:266;;-1:-1:-1;;;;;;;;;;;;923:9:266;;;9242:18:310;;923:23:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:11;996:4;:10;;;1007:1;996:13;;;;;;;:::i;:::-;;;;;1038:12;;1027:43;;-1:-1:-1;;;1027:43:266;;-1:-1:-1;;;;;11493:32:310;;;1027:43:266;;;11475:51:310;11542:18;;;11535:34;;;996:13:266;;-1:-1:-1;1038:12:266;;;1027:29;;11448:18:310;;1027:43:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1023:78;;1082:16;;-1:-1:-1;;;1082:16:266;;309:37:270;1082:16:266;;;9269:41:310;-1:-1:-1;;;;;;;;;;;1082:9:266;;;9242:18:310;;1082:16:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1023:78;1123:12;;1143:7;;1114:45;;-1:-1:-1;;;;;1123:12:266;;;;1137:4;;1143:7;1152:6;1114:8;:45::i;:::-;1173:14;;-1:-1:-1;;;1173:14:266;;-1:-1:-1;;;;;10041:32:310;;1173:14:266;;;10023:51:310;-1:-1:-1;;;;;;;;;;;1173:8:266;;;9996:18:310;;1173:14:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1202:7:266;;1193:39;;-1:-1:-1;;;1193:39:266;;;;;11754:25:310;;;-1:-1:-1;;;;;11815:32:310;;;11795:18;;;11788:60;1202:7:266;;;;-1:-1:-1;1193:25:266;;-1:-1:-1;11727:18:310;;1193:39:266;;;;;;;;;;;;;;;;;;;-1:-1:-1;1193:39:266;;;;;;;;-1:-1:-1;;1193:39:266;;;;;;;;;;;;:::i;:::-;;;1189:74;;1244:16;;-1:-1:-1;;;1244:16:266;;309:37:270;1244:16:266;;;9269:41:310;-1:-1:-1;;;;;;;;;;;1244:9:266;;;9242:18:310;;1244:16:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:74;;;;;1298:11;1312:4;:10;;;1323:1;1312:13;;;;;;;:::i;:::-;;;;;1354:12;;1343:43;;-1:-1:-1;;;1343:43:266;;-1:-1:-1;;;;;11493:32:310;;;1343:43:266;;;11475:51:310;11542:18;;;11535:34;;;1312:13:266;;-1:-1:-1;1354:12:266;;;1343:29;;11448:18:310;;1343:43:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:78;;1398:16;;-1:-1:-1;;;1398:16:266;;309:37:270;1398:16:266;;;9269:41:310;-1:-1:-1;;;;;;;;;;;1398:9:266;;;9242:18:310;;1398:16:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1339:78;868:559;;;863:3;;;;;:::i;:::-;;;;839:588;;;;1478:16;1489:4;1478:10;:16::i;:::-;712:789;:::o;1534:664::-;1615:1;1601:4;:10;;;:15;1597:595;;1657:10;;;;1697:12;;1716:7;;1686:44;;-1:-1:-1;;;1686:44:266;;-1:-1:-1;;;;;1716:7:266;;;1686:44;;;11475:51:310;11542:18;;;11535:34;;;1697:12:266;;;1686:29;;11448:18:310;;1686:44:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1682:79;;1742:16;;-1:-1:-1;;;1742:16:266;;309:37:270;1742:16:266;;;9269:41:310;-1:-1:-1;;;;;;;;;;;1742:9:266;;;9242:18:310;;1742:16:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1597:595;1896:10;;;;1886:37;;-1:-1:-1;;;1886:37:266;;-1:-1:-1;;;;;;;1886:37:266;;;9269:41:310;-1:-1:-1;;;;;;;;;;;1886:9:266;;;9242:18:310;;1886:37:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1969:9;1991:4;:10;;;-1:-1:-1;;1986:15:266;;;;:::i;:::-;2031:12;;2050:7;;2020:44;;-1:-1:-1;;;2020:44:266;;-1:-1:-1;;;;;2050:7:266;;;2020:44;;;11475:51:310;11542:18;;;11535:34;;;1969:33:266;;-1:-1:-1;2031:12:266;;2020:29;;11448:18:310;;2020:44:266;11301:274:310;2447:178:276;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;10400:319:266:-;10487:16;10498:4;10487:10;:16::i;:::-;10530:9;;:12;10561:39;10567:6;10513:14;10578:21;10530:12;10578:13;:21::i;10561:39::-;10619:12;;10641:7;;10552:48;;-1:-1:-1;10610:55:266;;-1:-1:-1;;;;;10619:12:266;;;;10633:6;;10641:7;-1:-1:-1;;10610:8:266;:55::i;:::-;10675:37;10697:6;10705;10675:21;:37::i;8462:320::-;8550:16;8561:4;8550:10;:16::i;:::-;8593:9;;:12;8624:38;8630:6;8576:14;8641:20;8593:12;8641;:20::i;8624:38::-;8681:12;;8703:7;;8615:47;;-1:-1:-1;8672:55:266;;-1:-1:-1;;;;;8681:12:266;;;;8695:6;;8703:7;-1:-1:-1;;8672:8:266;:55::i;:::-;8737:38;8760:6;8768;8737:22;:38::i;3181:419:265:-;3275:17;;-1:-1:-1;;;3275:17:265;;-1:-1:-1;;;;;10041:32:310;;3275:17:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;3275:8:265;;;9996:18:310;;3275:17:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3294:9;3306:29;3328:6;3306:21;:29::i;:::-;3424:17;;-1:-1:-1;;;3424:17:265;;-1:-1:-1;;;;;10041:32:310;;3424:17:265;;;10023:51:310;3294:41:265;;-1:-1:-1;;;;;;;;;;;;3424:8:265;;;9996:18:310;;3424:17:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:9;3455:29;3477:6;3455:21;:29::i;7539:401:266:-;7632:16;7643:4;7632:10;:16::i;:::-;7677:9;;:12;;;7718;;;7759;;;;;7677;;7718;7790:36;7796:6;7658:14;7807:18;7759:12;7807:11;:18::i;7790:36::-;7845:7;;7781:45;;-1:-1:-1;7836:43:266;;-1:-1:-1;;;;;7845:7:266;7854:5;7861:6;7869:9;7836:8;:43::i;:::-;7889:44;7901:6;7909:8;7919:5;7926:6;7889:11;:44::i;9443:313::-;9528:16;9539:4;9528:10;:16::i;:::-;9571:9;;:12;9602:37;9608:6;9554:14;9619:19;9571:12;9619:11;:19::i;9602:37::-;9658:12;;9680:7;;9593:46;;-1:-1:-1;9649:55:266;;-1:-1:-1;;;;;9658:12:266;;;;9672:6;;9680:7;-1:-1:-1;;9649:8:266;:55::i;:::-;9714:35;9734:6;9742;9714:19;:35::i;2301:140:276:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7081:452:266;7165:16;7176:4;7165:10;:16::i;:::-;7210:9;;:12;;;7251;;;7292;;;;7333;;;;;7210;;7251;;7364:36;7370:6;7191:14;7381:18;7292:12;7381:11;:18::i;7364:36::-;7419:7;;7355:45;;-1:-1:-1;7410:48:266;;-1:-1:-1;;;;;7419:7:266;7428:5;7435:6;-1:-1:-1;;7410:8:266;:48::i;:::-;7468:58;7487:6;7495:8;7505:5;7512;7519:6;7468:18;:58::i;8408:326:265:-;8532:15;;-1:-1:-1;;;8532:15:265;;-1:-1:-1;;;;;10041:32:310;;8532:15:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;8532:8:265;;;9996:18:310;;8532:15:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8549:12;8564:29;8586:6;8564:21;:29::i;:::-;8603:16;;-1:-1:-1;;;8603:16:265;;-1:-1:-1;;;;;10041:32:310;;8603:16:265;;;10023:51:310;8549:44:265;;-1:-1:-1;;;;;;;;;;;;8603:8:265;;;9996:18:310;;8603:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8621:11;8635:39;8650:6;8658:8;8668:5;8635:14;:39::i;:::-;8621:53;;8684:43;8702:6;8710:7;8719;;8684:17;:43::i;6868:207:266:-;6935:16;6946:4;6935:10;:16::i;:::-;6978:9;;:12;;;7017;;;;7039:29;6978:12;7017;7039:14;:29::i;2391:165::-;2460:16;2471:4;2460:10;:16::i;:::-;2503:9;;:12;2525:24;2503:12;2525:16;:24::i;2778:146:276:-;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:115:265;3003:16;;-1:-1:-1;;;3003:16:265;;-1:-1:-1;;;;;10041:32:310;;3003:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;3003:8:265;;;9996:18:310;;3003:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3030:7;;;;;;;;;-1:-1:-1;;;;;3030:7:265;-1:-1:-1;;;;;3021:29:265;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13920:351::-;14000:16;;-1:-1:-1;;;14000:16:265;;;;13995:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;14018:9:265;;14060:1;14035:7;;;;;;;;;-1:-1:-1;;;;;14035:7:265;-1:-1:-1;;;;;14028:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14018:44;;-1:-1:-1;;;;;;14018:44:265;;;;;;;14028:33;-1:-1:-1;14018:44:265;;;9269:41:310;9242:18;;14018:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13995:67;14072:16;;-1:-1:-1;;;14072:16:265;;-1:-1:-1;;;;;10041:32:310;;14072:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;14072:8:265;;;9996:18:310;;14072:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14090:12;14105:26;14116:6;14124;14105:10;:26::i;:::-;14141:16;;-1:-1:-1;;;14141:16:265;;-1:-1:-1;;;;;10041:32:310;;14141:16:265;;;10023:51:310;14090:41:265;;-1:-1:-1;;;;;;;;;;;;14141:8:265;;;9996:18:310;;14141:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14159:12;14174:36;14187:6;14195;14203;14174:12;:36::i;:::-;14159:51;;14220:44;14238:7;14247;14256;;14220:17;:44::i;12303:361::-;12388:16;;-1:-1:-1;;;12388:16:265;;;;12383:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;12406:9:265;;12448:1;12423:7;;;;;;;;;-1:-1:-1;;;;;12423:7:265;-1:-1:-1;;;;;12416:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12406:44;;-1:-1:-1;;;;;;12406:44:265;;;;;;;12416:33;-1:-1:-1;12406:44:265;;;9269:41:310;9242:18;;12406:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12383:67;12460:16;;-1:-1:-1;;;12460:16:265;;-1:-1:-1;;;;;10041:32:310;;12460:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;12460:8:265;;;9996:18:310;;12460:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12478:12;12493:29;12507:6;12515;12493:13;:29::i;:::-;12532:16;;-1:-1:-1;;;12532:16:265;;-1:-1:-1;;;;;10041:32:310;;12532:16:265;;;10023:51:310;12478:44:265;;-1:-1:-1;;;;;;;;;;;;12532:8:265;;;9996:18:310;;12532:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12550:12;12565:38;12580:6;12588;12596;12565:14;:38::i;:::-;12550:53;;12613:44;12631:7;12640;12649;;12613:17;:44::i;4380:406:266:-;4462:16;4473:4;4462:10;:16::i;:::-;4507:9;;:12;;;4548;;;4589;;;;;4507;;4548;4620:35;4626:6;4488:14;4637:17;4507:12;4637:9;:17::i;4620:35::-;4674:12;;4696:7;;4611:44;;-1:-1:-1;4665:55:266;;-1:-1:-1;;;;;4674:12:266;;;;4688:6;;4696:7;-1:-1:-1;;4665:8:266;:55::i;:::-;4730:49;4747:6;4755:8;4765:5;4772:6;4730:16;:49::i;8788:324::-;8878:16;8889:4;8878:10;:16::i;:::-;8921:9;;:12;8952:38;8958:6;8904:14;8969:20;8921:12;8969;:20::i;8952:38::-;9009:12;;9031:7;;8943:47;;-1:-1:-1;9000:55:266;;-1:-1:-1;;;;;9009:12:266;;;;9023:6;;9031:7;-1:-1:-1;;9000:8:266;:55::i;:::-;9065:40;9090:6;9098;9065:24;:40::i;14727:361:265:-;14807:16;;-1:-1:-1;;;14807:16:265;;-1:-1:-1;;;;;10041:32:310;;14807:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;14807:8:265;;;9996:18:310;;14807:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14825:12;14840:38;14855:6;14863;14871;14840:14;:38::i;:::-;14893:16;;14825:53;;-1:-1:-1;;;;14893:16:265;;;;14888:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;14911:9:265;;14953:1;14928:7;;;;;;;;;-1:-1:-1;;;;;14928:7:265;-1:-1:-1;;;;;14921:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14911:44;;-1:-1:-1;;;;;;14911:44:265;;;;;;;14921:33;-1:-1:-1;14911:44:265;;;9269:41:310;9242:18;;14911:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14888:67;14965:16;;-1:-1:-1;;;14965:16:265;;-1:-1:-1;;;;;10041:32:310;;14965:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;14965:8:265;;;9996:18:310;;14965:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14983:12;14998:29;15012:6;15020;14998:13;:29::i;6520:316::-;6625:15;;-1:-1:-1;;;6625:15:265;;-1:-1:-1;;;;;10041:32:310;;6625:15:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;6625:8:265;;;9996:18:310;;6625:15:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6642:18;6663:25;6681:6;6663:17;:25::i;:::-;6698:16;;-1:-1:-1;;;6698:16:265;;-1:-1:-1;;;;;10041:32:310;;6698:16:265;;;10023:51:310;6642:46:265;;-1:-1:-1;;;;;;;;;;;;6698:8:265;;;9996:18:310;;6698:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6716:17;6736:28;6747:6;6755:8;6736:10;:28::i;:::-;6716:48;;6774:55;6792:12;6806:13;6821:7;;6774:17;:55::i;1866:141:276:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9937:131:265;10009:16;;-1:-1:-1;;;10009:16:265;;-1:-1:-1;;;;;10041:32:310;;10009:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;10009:8:265;;;9996:18:310;;10009:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10036:7:265;;10027:34;;-1:-1:-1;;;10027:34:265;;-1:-1:-1;;;;;10041:32:310;;;10027:34:265;;;10023:51:310;10036:7:265;;;;-1:-1:-1;10027:27:265;;-1:-1:-1;9996:18:310;;10027:34:265;9877:203:310;12701:355:265;12779:16;;-1:-1:-1;;;12779:16:265;;-1:-1:-1;;;;;10041:32:310;;12779:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;12779:8:265;;;9996:18:310;;12779:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12797:11;12811:36;12824:6;12832;12840;12811:12;:36::i;:::-;12862:16;;12797:50;;-1:-1:-1;;;;12862:16:265;;;;12857:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;12880:9:265;;12922:1;12897:7;;;;;;;;;-1:-1:-1;;;;;12897:7:265;-1:-1:-1;;;;;12890:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12880:44;;-1:-1:-1;;;;;;12880:44:265;;;;;;;12890:33;-1:-1:-1;12880:44:265;;;9269:41:310;9242:18;;12880:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12857:67;12934:16;;-1:-1:-1;;;12934:16:265;;-1:-1:-1;;;;;10041:32:310;;12934:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;12934:8:265;;;9996:18:310;;12934:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12952:12;12967:29;12981:6;12989;12967:13;:29::i;5401:458:266:-;5487:16;5498:4;5487:10;:16::i;:::-;5532:9;;:12;;;5573;;;5614;;;;5655;;;;;5532;;5573;;5686:38;5692:6;5513:14;5703:20;5614:12;5703:13;:20::i;5686:38::-;5743:7;;5677:47;;-1:-1:-1;5734:48:266;;-1:-1:-1;;;;;5743:7:266;5752:5;5759:6;-1:-1:-1;;5734:8:266;:48::i;:::-;5792:60;5813:6;5821:8;5831:5;5838;5845:6;5792:20;:60::i;1819:584:268:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:268;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:268;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:268;;;11475:51:310;;;-1:-1:-1;;;11542:18:310;;;11535:34;2196:43:268;;;;;;;;;11448:18:310;;;2196:43:268;;;-1:-1:-1;;1671:64:268;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:268;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:268:o;2790:103:265:-;2843:16;;-1:-1:-1;;;2843:16:265;;-1:-1:-1;;;;;10041:32:310;;2843:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;2843:8:265;;;9996:18:310;;2843:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2870:7;;;;;;;;;-1:-1:-1;;;;;2870:7:265;-1:-1:-1;;;;;2861:23:265;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4792:355:266:-;4883:16;4894:4;4883:10;:16::i;:::-;4928:9;;:12;;;4969;;;;5000:35;5006:6;4909:14;5017:17;4928:12;5017:9;:17::i;5000:35::-;5054:12;;5076:7;;4991:44;;-1:-1:-1;5045:50:266;;-1:-1:-1;;;;;5054:12:266;;;;5068:6;;5076:7;5085:9;5045:8;:50::i;:::-;5105:35;5115:6;5123:8;5133:6;5105:9;:35::i;10083:311::-;10168:16;10179:4;10168:10;:16::i;:::-;10211:9;;:12;10242:35;10248:6;10194:14;10259:17;10211:12;10259:9;:17::i;10242:35::-;10296:12;;10318:7;;10233:44;;-1:-1:-1;10287:55:266;;-1:-1:-1;;;;;10296:12:266;;;;10310:6;;10318:7;-1:-1:-1;;10287:8:266;:55::i;:::-;10352:35;10372:6;10380;10352:19;:35::i;3767:364::-;3861:16;3872:4;3861:10;:16::i;:::-;3906:9;;:12;;;3947;;;;3978:38;3984:6;3887:14;3995:20;3906:12;3995;:20::i;3978:38::-;4035:12;;4057:7;;3969:47;;-1:-1:-1;4026:50:266;;-1:-1:-1;;;;;4035:12:266;;;;4049:6;;4057:7;4066:9;4026:8;:50::i;:::-;4086:38;4099:6;4107:8;4117:6;4086:12;:38::i;10701:1099:265:-;10832:12;;10825:40;;-1:-1:-1;;;10825:40:265;;-1:-1:-1;;;;;10041:32:310;;;10825:40:265;;;10023:51:310;10801:21:265;;10832:12;;10825:30;;9996:18:310;;10825:40:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10903:7;;10896:32;;-1:-1:-1;;;10896:32:265;;-1:-1:-1;;;;;10041:32:310;;;10896::265;;;10023:51:310;10801:64:265;;-1:-1:-1;10875:18:265;;10903:7;;;;10896:25;;9996:18:310;;10896:32:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10965:7;;10958:40;;-1:-1:-1;;;10958:40:265;;10875:53;;-1:-1:-1;10938:17:265;;-1:-1:-1;;;;;10965:7:265;;;;10958:25;;:40;;10984:5;;10991:6;;10958:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11009:16;;-1:-1:-1;;;11009:16:265;;-1:-1:-1;;;;;10041:32:310;;11009:16:265;;;10023:51:310;10938:60:265;;-1:-1:-1;;;;;;;;;;;;11009:8:265;;;9996:18:310;;11009:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11027:11;11041:37;11054:6;11062:8;11072:5;11041:12;:37::i;:::-;11120:12;;11113:40;;-1:-1:-1;;;11113:40:265;;-1:-1:-1;;;;;10041:32:310;;;11113:40:265;;;10023:51:310;11027::265;;-1:-1:-1;11089:21:265;;11120:12;;;;11113:30;;9996:18:310;;11113:40:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11191:7;;11184:32;;-1:-1:-1;;;11184:32:265;;-1:-1:-1;;;;;10041:32:310;;;11184::265;;;10023:51:310;11089:64:265;;-1:-1:-1;11163:18:265;;11191:7;;;;11184:25;;9996:18:310;;11184:32:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11253:7;;11246:40;;-1:-1:-1;;;11246:40:265;;11163:53;;-1:-1:-1;11226:17:265;;-1:-1:-1;;;;;11253:7:265;;;;11246:25;;:40;;11272:5;;11279:6;;11246:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11226:60;-1:-1:-1;11297:74:265;11315:13;11330:22;11346:6;11330:13;:22;:::i;11297:74::-;11381:80;11399:16;11417:25;11436:6;11417:16;:25;:::i;11381:80::-;11567:5;-1:-1:-1;;;;;11557:15:265;:6;-1:-1:-1;;;;;11557:15:265;;;:49;;;;;-1:-1:-1;;11576:12:265;:30;;11557:49;11553:131;;;11608:76;11626:12;11640:21;11655:6;11640:12;:21;:::i;11608:76::-;11695:98;11716:5;-1:-1:-1;;;;;11706:15:265;:6;-1:-1:-1;;;;;11706:15:265;;:36;;;-1:-1:-1;11725:17:265;;;11706:36;:68;;;-1:-1:-1;11747:11:265;;:26;;;;-1:-1:-1;11762:11:265;;11747:26;11695:98;;;;;;;;;;;;;-1:-1:-1;;;11695:98:265;;;:10;:98::i;:::-;10791:1009;;;;;;;10701:1099;;;;:::o;2592:245:266:-;2678:16;2689:4;2678:10;:16::i;:::-;2722:9;;:12;;;2762;;;;2784:46;2722:12;2762;2823:6;2784:20;:46::i;1170:400:305:-;1334:53;1348:6;1340:15;;1357:3;1370:15;1362:24;;1334:5;:53::i;:::-;1473:11;;1446:47;;1319:69;;-1:-1:-1;1398:45:305;;-1:-1:-1;;;;;1473:11:305;;;;1319:69;;1446:47;;;:::i;:::-;-1:-1:-1;;;;;14327:32:310;;;14309:51;;14408:4;14396:17;14391:2;14376:18;;14369:45;14297:2;14282:18;1446:47:305;;;;;;;;;;;;;;;;;;;;;;;1398:95;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;1503:15:305;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1530:22;-1:-1:-1;;;;;1530:31:305;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8756:1103:265:-;8889:12;;8882:40;;-1:-1:-1;;;8882:40:265;;-1:-1:-1;;;;;10041:32:310;;;8882:40:265;;;10023:51:310;8858:21:265;;8889:12;;8882:30;;9996:18:310;;8882:40:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8960:7;;8953:32;;-1:-1:-1;;;8953:32:265;;-1:-1:-1;;;;;10041:32:310;;;8953::265;;;10023:51:310;8858:64:265;;-1:-1:-1;8932:18:265;;8960:7;;;;8953:25;;9996:18:310;;8953:32:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9022:7;;9015:40;;-1:-1:-1;;;9015:40:265;;8932:53;;-1:-1:-1;8995:17:265;;-1:-1:-1;;;;;9022:7:265;;;;9015:25;;:40;;9041:5;;9048:6;;9015:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9066:16;;-1:-1:-1;;;9066:16:265;;-1:-1:-1;;;;;10041:32:310;;9066:16:265;;;10023:51:310;8995:60:265;;-1:-1:-1;;;;;;;;;;;;9066:8:265;;;9996:18:310;;9066:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9084:11;9098:39;9113:6;9121:8;9131:5;9098:14;:39::i;:::-;9179:12;;9172:40;;-1:-1:-1;;;9172:40:265;;-1:-1:-1;;;;;10041:32:310;;;9172:40:265;;;10023:51:310;9084:53:265;;-1:-1:-1;9148:21:265;;9179:12;;;;9172:30;;9996:18:310;;9172:40:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9250:7;;9243:32;;-1:-1:-1;;;9243:32:265;;-1:-1:-1;;;;;10041:32:310;;;9243::265;;;10023:51:310;9148:64:265;;-1:-1:-1;9222:18:265;;9250:7;;;;9243:25;;9996:18:310;;9243:32:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9312:7;;9305:40;;-1:-1:-1;;;9305:40:265;;9222:53;;-1:-1:-1;9285:17:265;;-1:-1:-1;;;;;9312:7:265;;;;9305:25;;:40;;9331:5;;9338:6;;9305:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9285:60;-1:-1:-1;9356:74:265;9374:13;9389:22;9405:6;9389:13;:22;:::i;9356:74::-;9440:80;9458:16;9476:25;9495:6;9476:16;:25;:::i;9440:80::-;9626:5;-1:-1:-1;;;;;9616:15:265;:6;-1:-1:-1;;;;;9616:15:265;;;:49;;;;;-1:-1:-1;;9635:12:265;:30;;9616:49;9612:131;;;9667:76;9685:12;9699:21;9714:6;9699:12;:21;:::i;9667:76::-;9754:98;9775:5;-1:-1:-1;;;;;9765:15:265;:6;-1:-1:-1;;;;;9765:15:265;;:36;;;-1:-1:-1;9784:17:265;;;9765:36;:68;;;-1:-1:-1;9806:11:265;;:26;;;;-1:-1:-1;9821:11:265;;9754:98;;;;;;;;;;;;;-1:-1:-1;;;9754:98:265;;;:10;:98::i;2843:245:266:-;2929:16;2940:4;2929:10;:16::i;:::-;2973:9;;:12;;;3013;;;;3035:46;2973:12;3013;3074:6;3035:20;:46::i;4164:210::-;4229:16;4240:4;4229:10;:16::i;:::-;4274:9;;:12;;;4315;;;;4337:30;4274:12;4315;4337;:30::i;2013:142:276:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:276;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;4630:406:265:-;4738:15;;-1:-1:-1;;;4738:15:265;;-1:-1:-1;;;;;10041:32:310;;4738:15:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;4738:8:265;;;9996:18:310;;4738:15:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4755:18;4776:28;4797:6;4776:20;:28::i;:::-;4895:16;;-1:-1:-1;;;4895:16:265;;-1:-1:-1;;;;;10041:32:310;;4895:16:265;;;10023:51:310;4755:49:265;;-1:-1:-1;;;;;;;;;;;;4895:8:265;;;9996:18:310;;4895:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4913:17;4933:31;4947:6;4955:8;4933:13;:31::i;:::-;4913:51;;4974:55;4992:12;5006:13;5021:7;;4974:17;:55::i;13118:351::-;13193:16;;-1:-1:-1;;;13193:16:265;;-1:-1:-1;;;;;10041:32:310;;13193:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;13193:8:265;;;9996:18:310;;13193:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13211:12;13226:36;13239:6;13247;13255;13226:12;:36::i;:::-;13277:16;;13211:51;;-1:-1:-1;;;;13277:16:265;;;;13272:67;;-1:-1:-1;;;;;;;;;;;309:37:270;;-1:-1:-1;;;;;13295:9:265;;13337:1;13312:7;;;;;;;;;-1:-1:-1;;;;;13312:7:265;-1:-1:-1;;;;;13305:27:265;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13295:44;;-1:-1:-1;;;;;;13295:44:265;;;;;;;13305:33;-1:-1:-1;13295:44:265;;;9269:41:310;9242:18;;13295:44:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13272:67;13349:16;;-1:-1:-1;;;13349:16:265;;-1:-1:-1;;;;;10041:32:310;;13349:16:265;;;10023:51:310;-1:-1:-1;;;;;;;;;;;13349:8:265;;;9996:18:310;;13349:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13367:12;13382:26;13393:6;13401;13382:10;:26::i;5057:969::-;5172:12;;5165:38;;-1:-1:-1;;;5165:38:265;;-1:-1:-1;;;;;10041:32:310;;;5165:38:265;;;10023:51:310;5143:19:265;;5172:12;;5165:30;;9996:18:310;;5165:38:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5244:7;;5237:35;;-1:-1:-1;;;5237:35:265;;-1:-1:-1;;;;;10041:32:310;;;5237:35:265;;;10023:51:310;5143:60:265;;-1:-1:-1;5213:21:265;;5244:7;;;;5237:25;;9996:18:310;;5237:35:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5309:12;;5341:7;;5302:47;;-1:-1:-1;;;5302:47:265;;5213:59;;-1:-1:-1;5282:17:265;;-1:-1:-1;;;;;5309:12:265;;;;5302:30;;:47;;5333:6;;5341:7;;;;5302:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5360:16;;-1:-1:-1;;;5360:16:265;;-1:-1:-1;;;;;10041:32:310;;5360:16:265;;;10023:51:310;5282:67:265;;-1:-1:-1;;;;;;;;;;;;5360:8:265;;;9996:18:310;;5360:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5378:11;5392:31;5406:6;5414:8;5392:13;:31::i;:::-;5463:12;;5456:38;;-1:-1:-1;;;5456:38:265;;-1:-1:-1;;;;;10041:32:310;;;5456:38:265;;;10023:51:310;5378:45:265;;-1:-1:-1;5434:19:265;;5463:12;;;;5456:30;;9996:18:310;;5456:38:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5535:7;;5528:35;;-1:-1:-1;;;5528:35:265;;-1:-1:-1;;;;;10041:32:310;;;5528:35:265;;;10023:51:310;5434:60:265;;-1:-1:-1;5504:21:265;;5535:7;;;;5528:25;;9996:18:310;;5528:35:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5600:12;;5632:7;;5593:47;;-1:-1:-1;;;5593:47:265;;5504:59;;-1:-1:-1;5573:17:265;;-1:-1:-1;;;;;5600:12:265;;;;5593:30;;:47;;5624:6;;5632:7;;;;5593:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5573:67;-1:-1:-1;5651:76:265;5669:14;5685:23;5702:6;5685:14;:23;:::i;5651:76::-;5817:80;5835:16;5853:25;5872:6;5853:16;:25;:::i;5817:80::-;-1:-1:-1;;5911:12:265;:30;5907:112;;5943:76;5961:12;5975:21;5990:6;5975:12;:21;:::i;10725:325:266:-;10815:16;10826:4;10815:10;:16::i;:::-;10858:9;;:12;10889:39;10895:6;10841:14;10906:21;10858:12;10906:13;:21::i;10889:39::-;10947:12;;10969:7;;10880:48;;-1:-1:-1;10938:55:266;;-1:-1:-1;;;;;10947:12:266;;;;10961:6;;10969:7;-1:-1:-1;;10938:8:266;:55::i;:::-;11003:40;11028:6;11036;11003:24;:40::i;16831:182:265:-;16938:67;;;;;11754:25:310;;;-1:-1:-1;;;;;11815:32:310;;11795:18;;;11788:60;16903:4:265;;16926:80;;-1:-1:-1;;;16961:25:265;11727:18:310;;16938:67:265;;;;-1:-1:-1;;16938:67:265;;;;;;;;;;;;;;-1:-1:-1;;;;;16938:67:265;-1:-1:-1;;;;;;16938:67:265;;;;;;;;;;16926:11;:80::i;:::-;16919:87;;16831:182;;;;;:::o;17410:202::-;17531:73;;;;;10419:25:310;;;-1:-1:-1;;;;;10518:15:310;;;10498:18;;;10491:43;10570:15;;10550:18;;;10543:43;17496:4:265;;17519:86;;-1:-1:-1;;;17554:24:265;10392:18:310;;17531:73:265;10217:375:310;17519:86:265;17512:93;;17410:202;;;;;;:::o;18514:534::-;18602:1;18597;:6;;18591:451;;18620:7;18630:5;18634:1;18630;:5;:::i;:::-;18620:15;;18658:8;18653:2;:13;18649:383;;;-1:-1:-1;;;;;;;;;;;18691:58:265;;;;14879:2:310;14861:21;;;14918:2;14898:18;;;14891:30;14957:34;14952:2;14937:18;;14930:62;-1:-1:-1;;;15023:2:310;15008:18;;15001:33;15066:3;15051:19;;14677:399;18691:58:265;;;;;;;;18772:36;;;15293:21:310;;;15350:2;15330:18;;;15323:30;-1:-1:-1;;;15384:2:310;15369:18;;15362:40;15469:4;15454:20;;15447:36;;;18772::265;;-1:-1:-1;;;;;;;;;;;18772:36:265;;;;15434:3:310;18772:36:265;;;18831;;;15706:21:310;;;15763:2;15743:18;;;15736:30;;;;-1:-1:-1;;;15797:2:310;15782:18;;15775:40;15882:4;15867:20;;15860:36;;;-1:-1:-1;;;;;;;;;;;18831:36:265;15847:3:310;15832:19;18831:36:265;;;;;;;;18890:43;;;16119:21:310;;;16176:2;16156:18;;;16149:30;-1:-1:-1;;;16210:2:310;16195:18;;16188:40;16295:4;16280:20;;16273:36;;;18890:43:265;;-1:-1:-1;;;;;;;;;;;18890:43:265;;;;16260:3:310;18890:43:265;;;18956:37;;;16532:21:310;;;16589:2;16569:18;;;16562:30;-1:-1:-1;;;16623:2:310;16608:18;;16601:40;16708:4;16693:20;;16686:36;;;18956:37:265;;-1:-1:-1;;;;;;;;;;;18956:37:265;;;;16673:3:310;18956:37:265;;;19011:6;:4;:6::i;12229:243:266:-;12312:16;;12292:4;;-1:-1:-1;;;12312:16:266;;;;12308:43;;;-1:-1:-1;;;12337:14:266;12229:243;-1:-1:-1;12229:243:266:o;12308:43::-;12397:7;;12390:31;;-1:-1:-1;;;12390:31:266;;-1:-1:-1;;;;;10041:32:310;;;12390:31:266;;;10023:51:310;12368:54:266;;12397:7;;12390:25;;9996:18:310;;12390:31:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12368:21;:54::i;2703:190:281:-;2786:14;2821:19;2828:1;2831:3;2836;2821:6;:19::i;:::-;2812:28;;2850:36;;;;;;;;;;;;;;-1:-1:-1;;;2850:36:281;;;2879:6;2850:12;:36::i;11300:215:266:-;11397:15;;-1:-1:-1;;;11397:15:266;;-1:-1:-1;;;;;10041:32:310;;11397:15:266;;;10023:51:310;-1:-1:-1;;;;;;;;;;;11397:8:266;;;9996:18:310;;11397:15:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11414:31;11427:5;11434:7;11443:1;11414:12;:31::i;:::-;11455:15;;-1:-1:-1;;;11455:15:266;;-1:-1:-1;;;;;10041:32:310;;11455:15:266;;;10023:51:310;-1:-1:-1;;;;;;;;;;;11455:8:266;;;9996:18:310;;11455:15:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11472:36;11485:5;11492:7;11501:6;11472:12;:36::i;6763:259:268:-;6825:1;6820;:6;6816:200;;-1:-1:-1;;;;;;;;;;;6847:40:268;;;;16935:2:310;16917:21;;;16974:2;16954:18;;;16947:30;17013:34;17008:2;16993:18;;16986:62;-1:-1:-1;;;17079:2:310;17064:18;;17057:31;17120:3;17105:19;;16733:397;6847:40:268;;;;;;;;6906:30;;;17347:21:310;;;17404:1;17384:18;;;17377:29;-1:-1:-1;;;17437:2:310;17422:18;;17415:39;17521:4;17506:20;;17499:36;;;6906:30:268;;-1:-1:-1;;;;;;;;;;;6906:30:268;;;;17486:3:310;6906:30:268;;;6955;;;17758:21:310;;;17815:1;17795:18;;;17788:29;;;;-1:-1:-1;;;17848:2:310;17833:18;;17826:39;17932:4;17917:20;;17910:36;;;-1:-1:-1;;;;;;;;;;;6955:30:268;17897:3:310;17882:19;6955:30:268;;;;;;;;6999:6;:4;:6::i;16659:166:265:-;16719:4;16742:76;16777:31;;;16810:6;16754:63;;;;;;18103:25:310;;18091:2;18076:18;;17957:177;17974:534:265;18062:1;18057;:6;;18051:451;;18080:7;18090:5;18094:1;18090;:5;:::i;:::-;18080:15;;18118:8;18113:2;:13;18109:383;;;-1:-1:-1;;;;;;;;;;;18151:58:265;;;;18341:2:310;18323:21;;;18380:2;18360:18;;;18353:30;18419:34;18414:2;18399:18;;18392:62;-1:-1:-1;;;18485:2:310;18470:18;;18463:33;18528:3;18513:19;;18139:399;17199:206:265;17322:75;;;;;10419:25:310;;;-1:-1:-1;;;;;10518:15:310;;;10498:18;;;10491:43;10570:15;;10550:18;;;10543:43;17287:4:265;;17310:88;;-1:-1:-1;;;17345:26:265;10392:18:310;;17322:75:265;10217:375:310;17018:176:265;17122:64;;;;;11754:25:310;;;-1:-1:-1;;;;;11815:32:310;;11795:18;;;11788:60;17087:4:265;;17110:77;;-1:-1:-1;;;17145:22:265;11727:18:310;;17122:64:265;11580:274:310;12478:216:266;12559:16;;12539:4;;-1:-1:-1;;;12559:16:266;;;;12555:43;;;-1:-1:-1;;;12584:14:266;12478:216;-1:-1:-1;12478:216:266:o;12555:43::-;12622:7;;12615:31;;-1:-1:-1;;;12615:31:266;;-1:-1:-1;;;;;10041:32:310;;;12615:31:266;;;10023:51:310;12622:7:266;;;;12615:25;;9996:18:310;;12615:31:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12022:201::-;12101:16;;12081:4;;-1:-1:-1;;;12101:16:266;;;;12097:43;;;-1:-1:-1;;;12126:14:266;12022:201;-1:-1:-1;12022:201:266:o;12097:43::-;12186:12;;12179:36;;-1:-1:-1;;;12179:36:266;;-1:-1:-1;;;;;10041:32:310;;;12179:36:266;;;10023:51:310;12157:59:266;;12186:12;;12179:30;;9996:18:310;;12179:36:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12157:21;:59::i;15297:170:265:-;15359:4;15382:78;15417:33;;;15452:6;15394:65;;;;;;18103:25:310;;18091:2;18076:18;;17957:177;5209:262:268;5271:1;5266;:6;5262:203;;-1:-1:-1;;;;;;;;;;;5293:41:268;;;;18745:2:310;18727:21;;;18784:2;18764:18;;;18757:30;18823:34;18818:2;18803:18;;18796:62;-1:-1:-1;;;18889:2:310;18874:18;;18867:32;18931:3;18916:19;;18543:398;5293:41:268;;;;;;;;5353:31;;;19158:21:310;;;19215:2;19195:18;;;19188:30;-1:-1:-1;;;19249:2:310;19234:18;;19227:40;19334:4;19319:20;;19312:36;;;5353:31:268;;-1:-1:-1;;;;;;;;;;;5353:31:268;;;;19299:3:310;5353:31:268;;;5403;;;19571:21:310;;;19628:2;19608:18;;;19601:30;;;;-1:-1:-1;;;19662:2:310;19647:18;;19640:40;19747:4;19732:20;;19725:36;;;-1:-1:-1;;;;;;;;;;;5403:31:268;19712:3:310;19697:19;5403:31:268;19359:408:310;11835:181:266;11917:16;;11897:4;;-1:-1:-1;;;11917:16:266;;;;11913:43;;;-1:-1:-1;;;11942:14:266;11835:181;-1:-1:-1;11835:181:266:o;11913:43::-;11980:12;;11973:36;;-1:-1:-1;;;11973:36:266;;-1:-1:-1;;;;;10041:32:310;;;11973:36:266;;;10023:51:310;11980:12:266;;;;11973:30;;9996:18:310;;11973:36:266;9877:203:310;3980:294:272;4093:13;4109:19;4123:1;4126;4109:13;:19::i;:::-;4093:35;;4151:8;4143:5;:16;4139:129;;;4180:30;4206:3;4180:30;;;;;;:::i;:::-;;;;;;;;4224:33;4242:1;4245;4248:8;4224:17;:33::i;15122:170:265:-;15184:4;15207:78;15242:33;;;15277:6;15219:65;;;;;;18103:25:310;;18091:2;18076:18;;17957:177;16484:170:265;16546:4;16569:78;16604:33;;;16639:6;16581:65;;;;;;18103:25:310;;18091:2;18076:18;;17957:177;16317:162:265;16375:4;16398:74;16433:29;;;16464:6;16410:61;;;;;;18103:25:310;;18091:2;18076:18;;17957:177;3425:191:268;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;16144:168:265:-;16205:4;16228:77;16263:32;;;16297:6;16240:64;;;;;;18103:25:310;;18091:2;18076:18;;17957:177;17618:350:265;17731:7;;:18;;17676:4;;;;;;-1:-1:-1;;;;;17731:7:265;;:18;;17744:4;;17731:18;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17692:57;;;;17763:7;17759:47;;;17790:7;17779:27;;;;;;;;;;;;:::i;:::-;17772:34;17618:350;-1:-1:-1;;;;17618:350:265:o;17759:47::-;17816:16;;-1:-1:-1;;;17816:16:265;;309:37:270;17816:16:265;;;9269:41:310;-1:-1:-1;;;;;;;;;;;17816:9:265;;;9242:18:310;;17816:16:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17941:1:265;;17618:350;-1:-1:-1;;;;;;;17618:350:265:o;2409:432:268:-;-1:-1:-1;;;;;;;;;;;2985:55:268;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:268;;;20425:51:310;;;-1:-1:-1;;;20492:18:310;;;20485:34;;;;2712:4:268;20535:18:310;;;20528:34;2489:11:268;;1671:64;2586:43;;20398:18:310;;2652:67:268;;;-1:-1:-1;;2652:67:268;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:268;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:268;2820:7;:14;;-1:-1:-1;;2820:14:268;;;;;2409:432::o;1434:1263:281:-;1518:14;1559:3;1552;:10;;1544:85;;;;-1:-1:-1;;;1544:85:281;;20775:2:310;1544:85:281;;;20757:21:310;20814:2;20794:18;;;20787:30;20853:34;20833:18;;;20826:62;20924:32;20904:18;;;20897:60;20974:19;;1544:85:281;;;;;;;;1863:3;1858:1;:8;;:20;;;;;1875:3;1870:1;:8;;1858:20;1854:34;;;-1:-1:-1;1887:1:281;1880:8;;1854:34;1899:12;1914:9;1920:3;1914;:9;:::i;:::-;:13;;1926:1;1914:13;:::i;:::-;1899:28;;2122:1;2117;:6;;:18;;;;;2134:1;2127:4;:8;2117:18;2113:38;;;2144:7;2150:1;2144:3;:7;:::i;:::-;2137:14;;;;;2113:38;2170:15;2184:1;-1:-1:-1;;2170:15:281;:::i;:::-;2165:1;:20;;:46;;;;-1:-1:-1;2196:15:281;2210:1;-1:-1:-1;;2196:15:281;:::i;:::-;2189:4;:22;2165:46;2161:82;;;2227:15;2241:1;-1:-1:-1;;2227:15:281;:::i;:::-;2220:23;;:3;:23;:::i;2161:82::-;2347:3;2343:1;:7;2339:352;;;2366:12;2381:7;2385:3;2381:1;:7;:::i;:::-;2366:22;-1:-1:-1;2402:11:281;2416;2423:4;2366:22;2416:11;:::i;:::-;2402:25;;2445:3;2452:1;2445:8;2441:24;;2462:3;2455:10;;;;;;;2441:24;2500:1;2488:9;2494:3;2488;:9;:::i;:::-;:13;;;;:::i;:::-;2479:22;;2352:160;;2339:352;;;2526:3;2522:1;:7;2518:173;;;2545:12;2560:7;2566:1;2560:3;:7;:::i;:::-;2545:22;-1:-1:-1;2581:11:281;2595;2602:4;2545:22;2595:11;:::i;:::-;2581:25;;2624:3;2631:1;2624:8;2620:24;;2641:3;2634:10;;;;;;;2620:24;2667:9;2673:3;2667;:9;:::i;:::-;:13;;2679:1;2667:13;:::i;:::-;2658:22;;2531:160;;2518:173;1534:1163;1434:1263;;;;;:::o;9671:207::-;9747:11;702:42;-1:-1:-1;;;;;9763:36:281;9847:2;9851;9800:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9800:54:281;;;;;;;;;;;;;;-1:-1:-1;;;;;9800:54:281;-1:-1:-1;;;9800:54:281;;;9763:92;;;9800:54;9763:92;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11521:308:266;11657:64;;;-1:-1:-1;;;;;11493:32:310;;;11657:64:266;;;11475:51:310;11542:18;;;;11535:34;;;11657:64:266;;;;;;;;;;11448:18:310;;;;11657:64:266;;;;;;;-1:-1:-1;;;;;11657:64:266;-1:-1:-1;;;11657:64:266;;;11646:76;;-1:-1:-1;;;;11646:10:266;;;;:76;;11657:64;11646:76;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11732:18:266;;-1:-1:-1;;;11732:18:266;;9294:14:310;;9287:22;11732:18:266;;;9269:41:310;11607:115:266;;-1:-1:-1;11607:115:266;-1:-1:-1;;;;;;;;;;;;11732:9:266;;;9242:18:310;;11732::266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11781:1;11764:7;:14;:18;11760:62;;;11794:27;;-1:-1:-1;;;;;;;;;;;11784:9:266;;;11794:27;;;;;;;;;;;;:::i;:::-;11784:38;;;;;;;;;;;;;9294:14:310;9287:22;9269:41;;9257:2;9242:18;;9129:187;11784:38:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11597:232;;11521:308;;;:::o;521:114:278:-;581:7;611:1;607;:5;:21;;623:5;627:1;623;:5;:::i;:::-;607:21;;;615:5;619:1;615;:5;:::i;3504:470:272:-;3598:13;3614:19;3628:1;3631;3614:13;:19::i;:::-;3598:35;;3656:8;3648:5;:16;3644:324;;;-1:-1:-1;;;;;;;;;;;3685:41:272;;;;21716:2:310;21698:21;;;21755:2;21735:18;;;21728:30;21794:34;21789:2;21774:18;;21767:62;-1:-1:-1;;;21860:2:310;21845:18;;21838:32;21902:3;21887:19;;21514:398;3685:41:272;;;;;;;;3745:31;;;19158:21:310;;;19215:2;19195:18;;;19188:30;-1:-1:-1;;;19249:2:310;19234:18;;19227:40;19334:4;19319:20;;19312:36;;;3745:31:272;;-1:-1:-1;;;;;;;;;;;3745:31:272;;;;19299:3:310;3745:31:272;;;3795;;;19571:21:310;;;19628:2;19608:18;;;19601:30;;;;-1:-1:-1;;;19662:2:310;19647:18;;19640:40;19747:4;19732:20;;19725:36;;;-1:-1:-1;;;;;;;;;;;3795:31:272;19712:3:310;19697:19;3795:31:272;19359:408:310;3262:157:268;3322:9;3317:96;;-1:-1:-1;;;;;;;;;;;3352:30:268;;;;22119:2:310;22101:21;;;22158:2;22138:18;;;22131:30;22197:25;22192:2;22177:18;;22170:53;22255:2;22240:18;;21917:347;3352:30:268;;;;;;;;3396:6;:4;:6::i;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:131:310:-;-1:-1:-1;;;;;89:31:310;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:310:o;470:388::-;538:6;546;599:2;587:9;578:7;574:23;570:32;567:52;;;615:1;612;605:12;567:52;654:9;641:23;673:31;698:5;673:31;:::i;:::-;723:5;-1:-1:-1;780:2:310;765:18;;752:32;793:33;752:32;793:33;:::i;:::-;845:7;835:17;;;470:388;;;;;:::o;863:345::-;930:2;924:9;972:4;960:17;;1007:18;992:34;;1028:22;;;989:62;986:185;;;1093:10;1088:3;1084:20;1081:1;1074:31;1128:4;1125:1;1118:15;1156:4;1153:1;1146:15;986:185;1187:2;1180:22;863:345;:::o;1213:480::-;1263:5;1316:3;1309:4;1301:6;1297:17;1293:27;1283:55;;1334:1;1331;1324:12;1283:55;1358:17;;:::i;:::-;1397:3;1435;1427:6;1423:16;1462:3;1454:6;1451:15;1448:35;;;1479:1;1476;1469:12;1448:35;1503:6;1518:146;1534:6;1529:3;1526:15;1518:146;;;1602:17;;1590:30;;1649:4;1640:14;;;;1551;1518:146;;;-1:-1:-1;1682:5:310;;1213:480;-1:-1:-1;;;;;1213:480:310:o;1698:898::-;1749:5;1797:6;1785:9;1780:3;1776:19;1772:32;1769:52;;;1817:1;1814;1807:12;1769:52;1839:17;;:::i;:::-;1830:26;;1901:3;1894:4;1883:9;1879:20;1875:30;1865:58;;1919:1;1916;1909:12;1865:58;1943:17;;:::i;:::-;1982:3;2023;2012:9;2008:19;2050:3;2042:6;2039:15;2036:35;;;2067:1;2064;2057:12;2036:35;2091:9;2109:227;2125:6;2120:3;2117:15;2109:227;;;2209:3;2196:17;2226:33;2251:7;2226:33;:::i;:::-;2272:20;;2321:4;2312:14;;;;2142;2109:227;;;2113:3;2359:5;2352;2345:20;2399:37;2432:3;2424:6;2399:37;:::i;:::-;2392:4;2385:5;2381:16;2374:63;;;;2471:50;2517:3;2511;2500:9;2496:19;2471:50;:::i;:::-;2464:4;2457:5;2453:16;2446:76;2584:3;2573:9;2569:19;2556:33;2549:4;2542:5;2538:16;2531:59;1698:898;;;;:::o;2601:223::-;2683:6;2736:3;2724:9;2715:7;2711:23;2707:33;2704:53;;;2753:1;2750;2743:12;2704:53;2776:42;2810:7;2799:9;2776:42;:::i;2829:292::-;2920:6;2928;2981:3;2969:9;2960:7;2956:23;2952:33;2949:53;;;2998:1;2995;2988:12;2949:53;3021:42;3055:7;3044:9;3021:42;:::i;:::-;3011:52;3110:3;3095:19;;;;3082:33;;-1:-1:-1;;;2829:292:310:o;3126:361::-;3226:6;3234;3242;3295:3;3283:9;3274:7;3270:23;3266:33;3263:53;;;3312:1;3309;3302:12;3263:53;3335:42;3369:7;3358:9;3335:42;:::i;:::-;3325:52;3424:3;3409:19;;3396:33;;-1:-1:-1;3476:3:310;3461:19;;;3448:33;;3126:361;-1:-1:-1;;;3126:361:310:o;3492:740::-;3587:6;3595;3603;3611;3619;3672:3;3660:9;3651:7;3647:23;3643:33;3640:53;;;3689:1;3686;3679:12;3640:53;3728:9;3715:23;3747:31;3772:5;3747:31;:::i;:::-;3797:5;-1:-1:-1;3854:2:310;3839:18;;3826:32;3867:33;3826:32;3867:33;:::i;:::-;3919:7;-1:-1:-1;3978:2:310;3963:18;;3950:32;3991:33;3950:32;3991:33;:::i;:::-;4043:7;-1:-1:-1;4102:2:310;4087:18;;4074:32;4115:33;4074:32;4115:33;:::i;:::-;3492:740;;;;-1:-1:-1;3492:740:310;;4221:3;4206:19;4193:33;;3492:740;-1:-1:-1;;3492:740:310:o;4237:658::-;4408:2;4460:21;;;4530:13;;4433:18;;;4552:22;;;4379:4;;4408:2;4631:15;;;;4605:2;4590:18;;;4379:4;4674:195;4688:6;4685:1;4682:13;4674:195;;;4753:13;;-1:-1:-1;;;;;4749:39:310;4737:52;;4844:15;;;;4809:12;;;;4785:1;4703:9;4674:195;;;-1:-1:-1;4886:3:310;;4237:658;-1:-1:-1;;;;;;4237:658:310:o;4900:456::-;4977:6;4985;4993;5046:2;5034:9;5025:7;5021:23;5017:32;5014:52;;;5062:1;5059;5052:12;5014:52;5101:9;5088:23;5120:31;5145:5;5120:31;:::i;:::-;5170:5;-1:-1:-1;5227:2:310;5212:18;;5199:32;5240:33;5199:32;5240:33;:::i;:::-;4900:456;;5292:7;;-1:-1:-1;;;5346:2:310;5331:18;;;;5318:32;;4900:456::o;5361:1569::-;5565:4;5594:2;5634;5623:9;5619:18;5664:2;5653:9;5646:21;5687:6;5722;5716:13;5753:6;5745;5738:22;5779:2;5769:12;;5812:2;5801:9;5797:18;5790:25;;5874:2;5864:6;5861:1;5857:14;5846:9;5842:30;5838:39;5912:2;5904:6;5900:15;5933:1;5954;5964:937;5980:6;5975:3;5972:15;5964:937;;;6049:22;;;-1:-1:-1;;6045:36:310;6033:49;;6105:13;;6192:9;;-1:-1:-1;;;;;6188:35:310;6173:51;;6263:11;;6257:18;6295:15;;;6288:27;;;6376:19;;6145:15;;;6408:24;;;6498:21;;;;6543:1;;6466:2;6454:15;;;6557:236;6573:8;6568:3;6565:17;6557:236;;;6654:15;;-1:-1:-1;;;;;;6650:42:310;6636:57;;6762:17;;;;6601:1;6592:11;;;;;6719:14;;;;6557:236;;;-1:-1:-1;6879:12:310;;;;6816:5;-1:-1:-1;;;6844:15:310;;;;6006:1;5997:11;5964:937;;;-1:-1:-1;6918:6:310;;5361:1569;-1:-1:-1;;;;;;;;;5361:1569:310:o;6935:250::-;7020:1;7030:113;7044:6;7041:1;7038:13;7030:113;;;7120:11;;;7114:18;7101:11;;;7094:39;7066:2;7059:10;7030:113;;;-1:-1:-1;;7177:1:310;7159:16;;7152:27;6935:250::o;7190:271::-;7232:3;7270:5;7264:12;7297:6;7292:3;7285:19;7313:76;7382:6;7375:4;7370:3;7366:14;7359:4;7352:5;7348:16;7313:76;:::i;:::-;7443:2;7422:15;-1:-1:-1;;7418:29:310;7409:39;;;;7450:4;7405:50;;7190:271;-1:-1:-1;;7190:271:310:o;7466:803::-;7628:4;7657:2;7697;7686:9;7682:18;7727:2;7716:9;7709:21;7750:6;7785;7779:13;7816:6;7808;7801:22;7854:2;7843:9;7839:18;7832:25;;7916:2;7906:6;7903:1;7899:14;7888:9;7884:30;7880:39;7866:53;;7954:2;7946:6;7942:15;7975:1;7985:255;7999:6;7996:1;7993:13;7985:255;;;8092:2;8088:7;8076:9;8068:6;8064:22;8060:36;8055:3;8048:49;8120:40;8153:6;8144;8138:13;8120:40;:::i;:::-;8110:50;-1:-1:-1;8218:12:310;;;;8183:15;;;;8021:1;8014:9;7985:255;;;-1:-1:-1;8257:6:310;;7466:803;-1:-1:-1;;;;;;;7466:803:310:o;8274:247::-;8333:6;8386:2;8374:9;8365:7;8361:23;8357:32;8354:52;;;8402:1;8399;8392:12;8354:52;8441:9;8428:23;8460:31;8485:5;8460:31;:::i;8526:598::-;8612:6;8620;8628;8636;8689:3;8677:9;8668:7;8664:23;8660:33;8657:53;;;8706:1;8703;8696:12;8657:53;8745:9;8732:23;8764:31;8789:5;8764:31;:::i;:::-;8814:5;-1:-1:-1;8871:2:310;8856:18;;8843:32;8884:33;8843:32;8884:33;:::i;:::-;8936:7;-1:-1:-1;8995:2:310;8980:18;;8967:32;9008:33;8967:32;9008:33;:::i;:::-;8526:598;;;;-1:-1:-1;9060:7:310;;9114:2;9099:18;9086:32;;-1:-1:-1;;8526:598:310:o;9321:114::-;9405:4;9398:5;9394:16;9387:5;9384:27;9374:55;;9425:1;9422;9415:12;9440:243;9497:6;9550:2;9538:9;9529:7;9525:23;9521:32;9518:52;;;9566:1;9563;9556:12;9518:52;9605:9;9592:23;9624:29;9647:5;9624:29;:::i;9688:184::-;9758:6;9811:2;9799:9;9790:7;9786:23;9782:32;9779:52;;;9827:1;9824;9817:12;9779:52;-1:-1:-1;9850:16:310;;9688:184;-1:-1:-1;9688:184:310:o;10085:127::-;10146:10;10141:3;10137:20;10134:1;10127:31;10177:4;10174:1;10167:15;10201:4;10198:1;10191:15;10597:304;-1:-1:-1;;;;;10827:15:310;;;10809:34;;10879:15;;10874:2;10859:18;;10852:43;10759:2;10744:18;;10597:304::o;10906:127::-;10967:10;10962:3;10958:20;10955:1;10948:31;10998:4;10995:1;10988:15;11022:4;11019:1;11012:15;11038:128;11105:9;;;11126:11;;;11123:37;;;11140:18;;:::i;11171:125::-;11236:9;;;11257:10;;;11254:36;;;11270:18;;:::i;11859:135::-;11898:3;11919:17;;;11916:43;;11939:18;;:::i;:::-;-1:-1:-1;11986:1:310;11975:13;;11859:135::o;11999:237::-;12071:9;;;12038:7;12096:9;;-1:-1:-1;;;12107:18:310;;12092:34;12089:60;;;12129:18;;:::i;:::-;12202:1;12193:7;12188:16;12185:1;12182:23;12178:1;12171:9;12168:38;12158:72;;12210:18;;:::i;12241:380::-;12320:1;12316:12;;;;12363;;;12384:61;;12438:4;12430:6;12426:17;12416:27;;12384:61;12491:2;12483:6;12480:14;12460:18;12457:38;12454:161;;12537:10;12532:3;12528:20;12525:1;12518:31;12572:4;12569:1;12562:15;12600:4;12597:1;12590:15;12454:161;;12241:380;;;:::o;12905:384::-;-1:-1:-1;;;;;;13090:33:310;;13078:46;;13147:13;;13060:3;;13169:74;13147:13;13232:1;13223:11;;13216:4;13204:17;;13169:74;:::i;:::-;13263:16;;;;13281:1;13259:24;;12905:384;-1:-1:-1;;;12905:384:310:o;13294:287::-;13423:3;13461:6;13455:13;13477:66;13536:6;13531:3;13524:4;13516:6;13512:17;13477:66;:::i;:::-;13559:16;;;;;13294:287;-1:-1:-1;;13294:287:310:o;13586:277::-;13653:6;13706:2;13694:9;13685:7;13681:23;13677:32;13674:52;;;13722:1;13719;13712:12;13674:52;13754:9;13748:16;13807:5;13800:13;13793:21;13786:5;13783:32;13773:60;;13829:1;13826;13819:12;13868:251;13938:6;13991:2;13979:9;13970:7;13966:23;13962:32;13959:52;;;14007:1;14004;13997:12;13959:52;14039:9;14033:16;14058:31;14083:5;14058:31;:::i;14425:247::-;14493:6;14546:2;14534:9;14525:7;14521:23;14517:32;14514:52;;;14562:1;14559;14552:12;14514:52;14594:9;14588:16;14613:29;14636:5;14613:29;:::i;19772:446::-;20022:2;20011:9;20004:21;20061:1;20056:2;20045:9;20041:18;20034:29;-1:-1:-1;;;20094:2:310;20083:9;20079:18;20072:35;20145:3;20138:4;20127:9;20123:20;20116:33;19985:4;20166:46;20207:3;20196:9;20192:19;20184:6;20166:46;:::i;21004:209::-;21036:1;21062;21052:132;;21106:10;21101:3;21097:20;21094:1;21087:31;21141:4;21138:1;21131:15;21169:4;21166:1;21159:15;21052:132;-1:-1:-1;21198:9:310;;21004:209::o;21218:291::-;21395:2;21384:9;21377:21;21358:4;21415:45;21456:2;21445:9;21441:18;21433:6;21415:45;:::i;:::-;21407:53;;21496:6;21491:2;21480:9;21476:18;21469:34;21218:291;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","prop_RT_deposit_redeem(address,uint256)":"029122a6","prop_RT_deposit_withdraw(address,uint256)":"9da01e21","prop_RT_mint_redeem(address,uint256)":"999f8a2d","prop_RT_mint_withdraw(address,uint256)":"4f4b8549","prop_RT_redeem_deposit(address,uint256)":"b7b0f358","prop_RT_redeem_mint(address,uint256)":"f7ab8c84","prop_RT_withdraw_deposit(address,uint256)":"ab23e76b","prop_RT_withdraw_mint(address,uint256)":"2797118b","prop_asset(address)":"bf791746","prop_convertToAssets(address,address,uint256)":"45a60819","prop_convertToShares(address,address,uint256)":"78a72e86","prop_deposit(address,address,uint256)":"fa91c87c","prop_maxDeposit(address,address)":"03ecaa63","prop_maxMint(address,address)":"5974db93","prop_maxRedeem(address,address)":"b6f9c1b7","prop_maxWithdraw(address,address)":"399785c2","prop_mint(address,address,uint256)":"583a33e8","prop_previewDeposit(address,address,address,uint256)":"ec5ccdbe","prop_previewMint(address,address,address,uint256)":"b152b6d4","prop_previewRedeem(address,address,address,address,uint256)":"1ac95e71","prop_previewWithdraw(address,address,address,address,uint256)":"8a764bc8","prop_redeem(address,address,address,uint256)":"c5aea780","prop_totalAssets(address)":"95f1481b","prop_withdraw(address,address,address,uint256)":"cdbecf7b","setUp()":"0a9254e4","setUpVault((address[4],uint256[4],uint256[4],int256))":"5f33763c","setUpYield((address[4],uint256[4],uint256[4],int256))":"66baecaf","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFail_redeem((address[4],uint256[4],uint256[4],int256),uint256)":"5900f734","testFail_withdraw((address[4],uint256[4],uint256[4],int256),uint256)":"0a2a2378","testFuzzDecimalsOverflow(uint8)":"ccb139a9","test_RT_deposit_redeem((address[4],uint256[4],uint256[4],int256),uint256)":"730b01ff","test_RT_deposit_withdraw((address[4],uint256[4],uint256[4],int256),uint256)":"a6f92970","test_RT_mint_redeem((address[4],uint256[4],uint256[4],int256),uint256)":"bfc2b3a0","test_RT_mint_withdraw((address[4],uint256[4],uint256[4],int256),uint256)":"3fbc89c5","test_RT_redeem_deposit((address[4],uint256[4],uint256[4],int256),uint256)":"37bad155","test_RT_redeem_mint((address[4],uint256[4],uint256[4],int256),uint256)":"840f3a74","test_RT_withdraw_deposit((address[4],uint256[4],uint256[4],int256),uint256)":"fbdc4189","test_RT_withdraw_mint((address[4],uint256[4],uint256[4],int256),uint256)":"6aaa88bc","test_asset((address[4],uint256[4],uint256[4],int256))":"08052de1","test_convertToAssets((address[4],uint256[4],uint256[4],int256),uint256)":"dbfa8265","test_convertToShares((address[4],uint256[4],uint256[4],int256),uint256)":"c5b13cad","test_deposit((address[4],uint256[4],uint256[4],int256),uint256,uint256)":"c168a242","test_maxDeposit((address[4],uint256[4],uint256[4],int256))":"1b6b03c2","test_maxMint((address[4],uint256[4],uint256[4],int256))":"dea9d64e","test_maxRedeem((address[4],uint256[4],uint256[4],int256))":"8d02a8cb","test_maxWithdraw((address[4],uint256[4],uint256[4],int256))":"4e2a578d","test_mint((address[4],uint256[4],uint256[4],int256),uint256,uint256)":"bfa30a7c","test_previewDeposit((address[4],uint256[4],uint256[4],int256),uint256)":"4c216f35","test_previewMint((address[4],uint256[4],uint256[4],int256),uint256)":"a21f731f","test_previewRedeem((address[4],uint256[4],uint256[4],int256),uint256)":"89bf68d6","test_previewWithdraw((address[4],uint256[4],uint256[4],int256),uint256)":"b9e71998","test_redeem((address[4],uint256[4],uint256[4],int256),uint256,uint256)":"7c139968","test_totalAssets((address[4],uint256[4],uint256[4],int256))":"8edbf2ca","test_withdraw((address[4],uint256[4],uint256[4],int256),uint256,uint256)":"125cc288"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_RT_deposit_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_RT_deposit_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_RT_mint_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_RT_mint_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_RT_redeem_deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_RT_redeem_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_RT_withdraw_deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_RT_withdraw_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"prop_asset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_convertToAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_convertToShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"prop_maxDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"prop_maxMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"prop_maxRedeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"prop_maxWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"other\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_previewDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"other\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_previewMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"other\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_previewRedeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"other\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_previewWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"prop_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"prop_totalAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"prop_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"setUpVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"setUpYield\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"testFail_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"testFail_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"offset\",\"type\":\"uint8\"}],\"name\":\"testFuzzDecimalsOverflow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_RT_deposit_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_RT_deposit_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_RT_mint_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_RT_mint_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_RT_redeem_deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_RT_redeem_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_RT_withdraw_deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_RT_withdraw_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"test_asset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_convertToAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_convertToShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"name\":\"test_deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"test_maxDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"test_maxMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"test_maxRedeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"test_maxWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"name\":\"test_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_previewDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_previewMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"test_previewRedeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"test_previewWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"name\":\"test_redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"}],\"name\":\"test_totalAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[4]\",\"name\":\"user\",\"type\":\"address[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"share\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"asset\",\"type\":\"uint256[4]\"},{\"internalType\":\"int256\",\"name\":\"yield\",\"type\":\"int256\"}],\"internalType\":\"struct ERC4626Test.Init\",\"name\":\"init\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"name\":\"test_withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"testFuzzDecimalsOverflow(uint8)\":{\"details\":\"Check the case where calculated `decimals` value overflows the `uint8` type.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol\":\"ERC4626StdTest\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x5a173dcd1c1f0074e4df6a9cdab3257e17f2e64f7b8f30ca9e17a8c5ea250e1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7883819ce2b72264a756063ae578661f62b23f4104b08e9565ac075e619f6ce3\",\"dweb:/ipfs/QmcSZdFiEQkWRmZQhnCdfH9ychooV81pBjr7hfaiYiNZT2\"]},\"lib/openzeppelin-contracts/contracts/mocks/ERC20Mock.sol\":{\"keccak256\":\"0x84e74b44b4a040b78c59f5775b3488568a52b6c444936c7da270d77b8978803a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c3b5d3c0abdf59181985086fa335519b96f3a9489570ee1188fd293b08a7b6f\",\"dweb:/ipfs/Qmey8qcStYDSubZatenoeRoM1ibkpd4nv6Ggdw4sHpct6P\"]},\"lib/openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol\":{\"keccak256\":\"0x06556b2dbe06204698215af670da018de404badeee7d32e880f5bdd8944949a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92f606c6490b437ebabdc0a585f54cbf1bdfe20ed473da4b3d68f1f797b32106\",\"dweb:/ipfs/QmR34ZVuNRzH3uKZN82fM8N8eB48ttu5aMyoYecQwXG83n\"]},\"lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol\":{\"keccak256\":\"0x83bd0a21cb4251482e05f5aca27378195b09e1d7d8859f060357921e626afea4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf81a1e61150ed045be51b6d8ba3132b224a1f338b42a96cece8fe7f3a5fdbb\",\"dweb:/ipfs/QmYZkmkke1SB6nSav2kp8me7e3XabKWoCqA2nYKzv6za4A\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0xa0ebd2a1608780392e5bc8805079b1a1961ebd73128ee23ab7149e7f6904fa53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7767ecfd8f8c30fb97fe2dc3b63e96f4593e458551c44e901a3acd4ed930d32c\",\"dweb:/ipfs/QmPJDWJBrzeCee7PqrixFwuCYhsEnFXcQqV6Z6FFdJSNpd\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.prop.sol\":{\"keccak256\":\"0x86284654efd95e4d6122cf563dd9fd261e7288e1d6aa731c9f6169f64bcc9336\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://21f5ab0ea30152928503c752db5a9f6b78c362e14281682efd7a96826e454c17\",\"dweb:/ipfs/Qmeoeyrm693xoXmaQNgnaXETjHVtFQ6eNR7cCfcqfmL6jV\"]},\"lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.test.sol\":{\"keccak256\":\"0x6848d8a991cdf54420d3b4ed9a92cf9b556dbf44bae78fcf7dec32b48d19e551\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9abb699b0cf3c514c2a910e6e85a7ff24afd5d5188f8010443f3b1b20869c0e0\",\"dweb:/ipfs/QmVkvNH4T5MCZkVFfr9sCZXGe7BU7V2ddD8GDJBA9QMErB\"]},\"lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa9a389ae870e108986d72d760a792d011516a7091ab48da20a5982f8ae2e2575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6de722b90ec6b39fe65e121db1735234c8a123fd7bee0ed5daa646b0e6e14a5\",\"dweb:/ipfs/QmQfrW7sP3snKdoxtEVWh5CAxApwhBs6uLvDhiJLTza1Lp\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x4ba6040f75ea4425c4cf5f77a8ea99f3a7a0fcb5bf13d0186d0952cf505b8203\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363bd98c4de695b34709e318213b2955d8a493d0249857701c05966c81341b10\",\"dweb:/ipfs/QmdtS71RFemQhq8WYT3WP5UQ4FAsCnaw2JbiPJ3vTUYYRu\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol\":{\"keccak256\":\"0x58aadd12aee9ac68c3d5d61722ea37a3ed1fce1f5fbda388f24b20c99356c0b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9b2d7108ed79e8161568c30789323df721b27d3d1e87456b5a35c8640da7e64\",\"dweb:/ipfs/QmSUqdQ6ogFxmshDMee15K4jfG1kikAtTRhvHw95XL4n8p\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_deposit_redeem"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_deposit_withdraw"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_mint_redeem"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_mint_withdraw"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_redeem_deposit"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_redeem_mint"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_withdraw_deposit"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_RT_withdraw_mint"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prop_asset"},{"inputs":[{"internalType":"address","name":"caller1","type":"address"},{"internalType":"address","name":"caller2","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_convertToAssets"},{"inputs":[{"internalType":"address","name":"caller1","type":"address"},{"internalType":"address","name":"caller2","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_convertToShares"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_deposit"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prop_maxDeposit"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prop_maxMint"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prop_maxRedeem"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prop_maxWithdraw"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_mint"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"other","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_previewDeposit"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"other","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_previewMint"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"other","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_previewRedeem"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"other","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_previewWithdraw"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_redeem"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prop_totalAssets"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prop_withdraw"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"setUpVault"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"setUpYield"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFail_redeem"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFail_withdraw"},{"inputs":[{"internalType":"uint8","name":"offset","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"testFuzzDecimalsOverflow"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_deposit_redeem"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_deposit_withdraw"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_mint_redeem"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_mint_withdraw"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_redeem_deposit"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_redeem_mint"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_withdraw_deposit"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RT_withdraw_mint"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"test_asset"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_convertToAssets"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_convertToShares"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"allowance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_deposit"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"test_maxDeposit"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"test_maxMint"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"test_maxRedeem"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"test_maxWithdraw"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"allowance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_mint"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_previewDeposit"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_previewMint"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_previewRedeem"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_previewWithdraw"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"allowance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_redeem"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]}],"stateMutability":"nonpayable","type":"function","name":"test_totalAssets"},{"inputs":[{"internalType":"struct ERC4626Test.Init","name":"init","type":"tuple","components":[{"internalType":"address[4]","name":"user","type":"address[4]"},{"internalType":"uint256[4]","name":"share","type":"uint256[4]"},{"internalType":"uint256[4]","name":"asset","type":"uint256[4]"},{"internalType":"int256","name":"yield","type":"int256"}]},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"allowance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_withdraw"}],"devdoc":{"kind":"dev","methods":{"testFuzzDecimalsOverflow(uint8)":{"details":"Check the case where calculated `decimals` value overflows the `uint8` type."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol":"ERC4626StdTest"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol":{"keccak256":"0x5a173dcd1c1f0074e4df6a9cdab3257e17f2e64f7b8f30ca9e17a8c5ea250e1c","urls":["bzz-raw://7883819ce2b72264a756063ae578661f62b23f4104b08e9565ac075e619f6ce3","dweb:/ipfs/QmcSZdFiEQkWRmZQhnCdfH9ychooV81pBjr7hfaiYiNZT2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/mocks/ERC20Mock.sol":{"keccak256":"0x84e74b44b4a040b78c59f5775b3488568a52b6c444936c7da270d77b8978803a","urls":["bzz-raw://0c3b5d3c0abdf59181985086fa335519b96f3a9489570ee1188fd293b08a7b6f","dweb:/ipfs/Qmey8qcStYDSubZatenoeRoM1ibkpd4nv6Ggdw4sHpct6P"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol":{"keccak256":"0x06556b2dbe06204698215af670da018de404badeee7d32e880f5bdd8944949a4","urls":["bzz-raw://92f606c6490b437ebabdc0a585f54cbf1bdfe20ed473da4b3d68f1f797b32106","dweb:/ipfs/QmR34ZVuNRzH3uKZN82fM8N8eB48ttu5aMyoYecQwXG83n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol":{"keccak256":"0x83bd0a21cb4251482e05f5aca27378195b09e1d7d8859f060357921e626afea4","urls":["bzz-raw://ddf81a1e61150ed045be51b6d8ba3132b224a1f338b42a96cece8fe7f3a5fdbb","dweb:/ipfs/QmYZkmkke1SB6nSav2kp8me7e3XabKWoCqA2nYKzv6za4A"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol":{"keccak256":"0xa0ebd2a1608780392e5bc8805079b1a1961ebd73128ee23ab7149e7f6904fa53","urls":["bzz-raw://7767ecfd8f8c30fb97fe2dc3b63e96f4593e458551c44e901a3acd4ed930d32c","dweb:/ipfs/QmPJDWJBrzeCee7PqrixFwuCYhsEnFXcQqV6Z6FFdJSNpd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69","urls":["bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71","dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439","urls":["bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c","dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.prop.sol":{"keccak256":"0x86284654efd95e4d6122cf563dd9fd261e7288e1d6aa731c9f6169f64bcc9336","urls":["bzz-raw://21f5ab0ea30152928503c752db5a9f6b78c362e14281682efd7a96826e454c17","dweb:/ipfs/Qmeoeyrm693xoXmaQNgnaXETjHVtFQ6eNR7cCfcqfmL6jV"],"license":"AGPL-3.0"},"lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.test.sol":{"keccak256":"0x6848d8a991cdf54420d3b4ed9a92cf9b556dbf44bae78fcf7dec32b48d19e551","urls":["bzz-raw://9abb699b0cf3c514c2a910e6e85a7ff24afd5d5188f8010443f3b1b20869c0e0","dweb:/ipfs/QmVkvNH4T5MCZkVFfr9sCZXGe7BU7V2ddD8GDJBA9QMErB"],"license":"AGPL-3.0"},"lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/openzeppelin-contracts/lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdCheats.sol":{"keccak256":"0xa9a389ae870e108986d72d760a792d011516a7091ab48da20a5982f8ae2e2575","urls":["bzz-raw://d6de722b90ec6b39fe65e121db1735234c8a123fd7bee0ed5daa646b0e6e14a5","dweb:/ipfs/QmQfrW7sP3snKdoxtEVWh5CAxApwhBs6uLvDhiJLTza1Lp"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/Vm.sol":{"keccak256":"0x4ba6040f75ea4425c4cf5f77a8ea99f3a7a0fcb5bf13d0186d0952cf505b8203","urls":["bzz-raw://363bd98c4de695b34709e318213b2955d8a493d0249857701c05966c81341b10","dweb:/ipfs/QmdtS71RFemQhq8WYT3WP5UQ4FAsCnaw2JbiPJ3vTUYYRu"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol":{"keccak256":"0x58aadd12aee9ac68c3d5d61722ea37a3ed1fce1f5fbda388f24b20c99356c0b7","urls":["bzz-raw://d9b2d7108ed79e8161568c30789323df721b27d3d1e87456b5a35c8640da7e64","dweb:/ipfs/QmSUqdQ6ogFxmshDMee15K4jfG1kikAtTRhvHw95XL4n8p"],"license":"MIT"}},"version":1},"id":305}
|