@aztec-foundation/l1-artifacts 6.0.0-rc.2 → 6.0.0-rc.5
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/dest/AttesterExitExtLibAbi.d.ts +12 -48
- package/dest/AttesterExitExtLibAbi.d.ts.map +1 -1
- package/dest/AttesterExitExtLibAbi.js +16 -64
- package/dest/AttesterExitExtLibAbi.js.map +1 -1
- package/dest/AttesterExitExtLibBytecode.d.ts +1 -1
- package/dest/AttesterExitExtLibBytecode.js +1 -1
- package/dest/CoinIssuerAbi.d.ts +12 -48
- package/dest/CoinIssuerAbi.d.ts.map +1 -1
- package/dest/CoinIssuerAbi.js +16 -64
- package/dest/CoinIssuerAbi.js.map +1 -1
- package/dest/DateGatedRelayerAbi.d.ts +12 -48
- package/dest/DateGatedRelayerAbi.d.ts.map +1 -1
- package/dest/DateGatedRelayerAbi.js +16 -64
- package/dest/DateGatedRelayerAbi.js.map +1 -1
- package/dest/EmpireBaseAbi.d.ts +12 -48
- package/dest/EmpireBaseAbi.d.ts.map +1 -1
- package/dest/EmpireBaseAbi.js +16 -64
- package/dest/EmpireBaseAbi.js.map +1 -1
- package/dest/EpochProofExtLibAbi.d.ts +12 -48
- package/dest/EpochProofExtLibAbi.d.ts.map +1 -1
- package/dest/EpochProofExtLibAbi.js +16 -64
- package/dest/EpochProofExtLibAbi.js.map +1 -1
- package/dest/EpochProofExtLibBytecode.d.ts +1 -1
- package/dest/EpochProofExtLibBytecode.d.ts.map +1 -1
- package/dest/EpochProofExtLibBytecode.js +1 -1
- package/dest/EpochProofExtLibBytecode.js.map +1 -1
- package/dest/ErrorsAbi.d.ts +12 -48
- package/dest/ErrorsAbi.d.ts.map +1 -1
- package/dest/ErrorsAbi.js +16 -64
- package/dest/ErrorsAbi.js.map +1 -1
- package/dest/EscapeHatchAbi.d.ts +12 -48
- package/dest/EscapeHatchAbi.d.ts.map +1 -1
- package/dest/EscapeHatchAbi.js +16 -64
- package/dest/EscapeHatchAbi.js.map +1 -1
- package/dest/EscapeHatchBytecode.d.ts +1 -1
- package/dest/EscapeHatchBytecode.js +1 -1
- package/dest/EscapeHatchStorage.d.ts +2 -2
- package/dest/EscapeHatchStorage.js +2 -2
- package/dest/FeeAssetHandlerAbi.d.ts +12 -48
- package/dest/FeeAssetHandlerAbi.d.ts.map +1 -1
- package/dest/FeeAssetHandlerAbi.js +16 -64
- package/dest/FeeAssetHandlerAbi.js.map +1 -1
- package/dest/FeeJuicePortalAbi.d.ts +12 -48
- package/dest/FeeJuicePortalAbi.d.ts.map +1 -1
- package/dest/FeeJuicePortalAbi.js +16 -64
- package/dest/FeeJuicePortalAbi.js.map +1 -1
- package/dest/FeeJuicePortalBytecode.d.ts +1 -1
- package/dest/FeeJuicePortalBytecode.js +1 -1
- package/dest/GSEAbi.d.ts +12 -48
- package/dest/GSEAbi.d.ts.map +1 -1
- package/dest/GSEAbi.js +16 -64
- package/dest/GSEAbi.js.map +1 -1
- package/dest/GovernanceAbi.d.ts +12 -48
- package/dest/GovernanceAbi.d.ts.map +1 -1
- package/dest/GovernanceAbi.js +16 -64
- package/dest/GovernanceAbi.js.map +1 -1
- package/dest/GovernanceProposerAbi.d.ts +12 -48
- package/dest/GovernanceProposerAbi.d.ts.map +1 -1
- package/dest/GovernanceProposerAbi.js +16 -64
- package/dest/GovernanceProposerAbi.js.map +1 -1
- package/dest/HonkVerifierAbi.d.ts +12 -48
- package/dest/HonkVerifierAbi.d.ts.map +1 -1
- package/dest/HonkVerifierAbi.js +16 -64
- package/dest/HonkVerifierAbi.js.map +1 -1
- package/dest/IERC20Abi.d.ts +12 -48
- package/dest/IERC20Abi.d.ts.map +1 -1
- package/dest/IERC20Abi.js +16 -64
- package/dest/IERC20Abi.js.map +1 -1
- package/dest/ISequencerRewardCalculatorAbi.d.ts +2607 -0
- package/dest/ISequencerRewardCalculatorAbi.d.ts.map +1 -0
- package/dest/ISequencerRewardCalculatorAbi.js +3473 -0
- package/dest/ISequencerRewardCalculatorAbi.js.map +1 -0
- package/dest/ISequencerRewardCalculatorBytecode.d.ts +9 -0
- package/dest/ISequencerRewardCalculatorBytecode.d.ts.map +1 -0
- package/dest/ISequencerRewardCalculatorBytecode.js +9 -0
- package/dest/ISequencerRewardCalculatorBytecode.js.map +1 -0
- package/dest/IVerifierAbi.d.ts +12 -48
- package/dest/IVerifierAbi.d.ts.map +1 -1
- package/dest/IVerifierAbi.js +16 -64
- package/dest/IVerifierAbi.js.map +1 -1
- package/dest/InboxAbi.d.ts +12 -48
- package/dest/InboxAbi.d.ts.map +1 -1
- package/dest/InboxAbi.js +16 -64
- package/dest/InboxAbi.js.map +1 -1
- package/dest/InboxBytecode.d.ts +1 -1
- package/dest/InboxBytecode.js +1 -1
- package/dest/MockVerifierAbi.d.ts +12 -48
- package/dest/MockVerifierAbi.d.ts.map +1 -1
- package/dest/MockVerifierAbi.js +16 -64
- package/dest/MockVerifierAbi.js.map +1 -1
- package/dest/MockZKPassportVerifierAbi.d.ts +12 -48
- package/dest/MockZKPassportVerifierAbi.d.ts.map +1 -1
- package/dest/MockZKPassportVerifierAbi.js +16 -64
- package/dest/MockZKPassportVerifierAbi.js.map +1 -1
- package/dest/MultiAdderAbi.d.ts +12 -48
- package/dest/MultiAdderAbi.d.ts.map +1 -1
- package/dest/MultiAdderAbi.js +16 -64
- package/dest/MultiAdderAbi.js.map +1 -1
- package/dest/MultiAdderBytecode.d.ts +1 -1
- package/dest/MultiAdderBytecode.js +1 -1
- package/dest/NewGovernanceProposerPayloadAbi.d.ts +12 -48
- package/dest/NewGovernanceProposerPayloadAbi.d.ts.map +1 -1
- package/dest/NewGovernanceProposerPayloadAbi.js +16 -64
- package/dest/NewGovernanceProposerPayloadAbi.js.map +1 -1
- package/dest/OutboxAbi.d.ts +12 -48
- package/dest/OutboxAbi.d.ts.map +1 -1
- package/dest/OutboxAbi.js +16 -64
- package/dest/OutboxAbi.js.map +1 -1
- package/dest/OutboxBytecode.d.ts +1 -1
- package/dest/OutboxBytecode.js +1 -1
- package/dest/RegisterNewRollupVersionPayloadAbi.d.ts +12 -48
- package/dest/RegisterNewRollupVersionPayloadAbi.d.ts.map +1 -1
- package/dest/RegisterNewRollupVersionPayloadAbi.js +16 -64
- package/dest/RegisterNewRollupVersionPayloadAbi.js.map +1 -1
- package/dest/RegisterNewRollupVersionPayloadBytecode.d.ts +1 -1
- package/dest/RegisterNewRollupVersionPayloadBytecode.js +1 -1
- package/dest/RegistryAbi.d.ts +12 -48
- package/dest/RegistryAbi.d.ts.map +1 -1
- package/dest/RegistryAbi.js +16 -64
- package/dest/RegistryAbi.js.map +1 -1
- package/dest/RewardDistributorAbi.d.ts +12 -48
- package/dest/RewardDistributorAbi.d.ts.map +1 -1
- package/dest/RewardDistributorAbi.js +16 -64
- package/dest/RewardDistributorAbi.js.map +1 -1
- package/dest/RewardExtLibAbi.d.ts +59 -48
- package/dest/RewardExtLibAbi.d.ts.map +1 -1
- package/dest/RewardExtLibAbi.js +77 -64
- package/dest/RewardExtLibAbi.js.map +1 -1
- package/dest/RewardExtLibBytecode.d.ts +1 -1
- package/dest/RewardExtLibBytecode.d.ts.map +1 -1
- package/dest/RewardExtLibBytecode.js +1 -1
- package/dest/RewardExtLibBytecode.js.map +1 -1
- package/dest/RollupAbi.d.ts +72 -79
- package/dest/RollupAbi.d.ts.map +1 -1
- package/dest/RollupAbi.js +93 -104
- package/dest/RollupAbi.js.map +1 -1
- package/dest/RollupBytecode.d.ts +91 -82
- package/dest/RollupBytecode.d.ts.map +1 -1
- package/dest/RollupBytecode.js +94 -82
- package/dest/RollupBytecode.js.map +1 -1
- package/dest/RollupOperationsExtLibAbi.d.ts +12 -48
- package/dest/RollupOperationsExtLibAbi.d.ts.map +1 -1
- package/dest/RollupOperationsExtLibAbi.js +16 -64
- package/dest/RollupOperationsExtLibAbi.js.map +1 -1
- package/dest/RollupOperationsExtLibBytecode.d.ts +1 -1
- package/dest/RollupOperationsExtLibBytecode.d.ts.map +1 -1
- package/dest/RollupOperationsExtLibBytecode.js +1 -1
- package/dest/RollupOperationsExtLibBytecode.js.map +1 -1
- package/dest/RollupStorage.d.ts +2 -2
- package/dest/RollupStorage.js +2 -2
- package/dest/SlasherAbi.d.ts +12 -48
- package/dest/SlasherAbi.d.ts.map +1 -1
- package/dest/SlasherAbi.js +16 -64
- package/dest/SlasherAbi.js.map +1 -1
- package/dest/SlasherDeploymentExtLibAbi.d.ts +12 -48
- package/dest/SlasherDeploymentExtLibAbi.d.ts.map +1 -1
- package/dest/SlasherDeploymentExtLibAbi.js +16 -64
- package/dest/SlasherDeploymentExtLibAbi.js.map +1 -1
- package/dest/SlasherDeploymentExtLibBytecode.d.ts +1 -1
- package/dest/SlasherDeploymentExtLibBytecode.d.ts.map +1 -1
- package/dest/SlasherDeploymentExtLibBytecode.js +1 -1
- package/dest/SlasherDeploymentExtLibBytecode.js.map +1 -1
- package/dest/SlashingProposerAbi.d.ts +12 -48
- package/dest/SlashingProposerAbi.d.ts.map +1 -1
- package/dest/SlashingProposerAbi.js +16 -64
- package/dest/SlashingProposerAbi.js.map +1 -1
- package/dest/SlashingProposerBytecode.d.ts +1 -1
- package/dest/SlashingProposerBytecode.js +1 -1
- package/dest/StakingAssetHandlerAbi.d.ts +12 -48
- package/dest/StakingAssetHandlerAbi.d.ts.map +1 -1
- package/dest/StakingAssetHandlerAbi.js +16 -64
- package/dest/StakingAssetHandlerAbi.js.map +1 -1
- package/dest/TestERC20Abi.d.ts +12 -48
- package/dest/TestERC20Abi.d.ts.map +1 -1
- package/dest/TestERC20Abi.js +16 -64
- package/dest/TestERC20Abi.js.map +1 -1
- package/dest/TokenPortalAbi.d.ts +12 -48
- package/dest/TokenPortalAbi.d.ts.map +1 -1
- package/dest/TokenPortalAbi.js +16 -64
- package/dest/TokenPortalAbi.js.map +1 -1
- package/dest/TokenPortalBytecode.d.ts +1 -1
- package/dest/TokenPortalBytecode.js +1 -1
- package/dest/UniswapPortalAbi.d.ts +12 -48
- package/dest/UniswapPortalAbi.d.ts.map +1 -1
- package/dest/UniswapPortalAbi.js +16 -64
- package/dest/UniswapPortalAbi.js.map +1 -1
- package/dest/UniswapPortalBytecode.d.ts +1 -1
- package/dest/UniswapPortalBytecode.js +1 -1
- package/dest/ValidatorOperationsExtLibAbi.d.ts +12 -48
- package/dest/ValidatorOperationsExtLibAbi.d.ts.map +1 -1
- package/dest/ValidatorOperationsExtLibAbi.js +16 -64
- package/dest/ValidatorOperationsExtLibAbi.js.map +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.d.ts +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.d.ts.map +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.js +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.js.map +1 -1
- package/dest/ValidatorSelectionLibAbi.d.ts +12 -48
- package/dest/ValidatorSelectionLibAbi.d.ts.map +1 -1
- package/dest/ValidatorSelectionLibAbi.js +16 -64
- package/dest/ValidatorSelectionLibAbi.js.map +1 -1
- package/dest/ValidatorSelectionLibBytecode.d.ts +1 -1
- package/dest/ValidatorSelectionLibBytecode.js +1 -1
- package/dest/checksum.d.ts +1 -1
- package/dest/checksum.js +1 -1
- package/dest/index.d.ts +2 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/index.js.map +1 -1
- package/l1-contracts/cache/solidity-files-cache.json +1 -1
- package/l1-contracts/foundry.toml +1 -1
- package/l1-contracts/out/AddressSnapshotLib.sol/AddressSnapshotLib.json +1 -1
- package/l1-contracts/out/AttestationLib.sol/AttestationLib.json +1 -1
- package/l1-contracts/out/AttesterExitExtLib.sol/AttesterExitExtLib.json +1 -1
- package/l1-contracts/out/BN254Lib.sol/BN254Lib.json +1 -1
- package/l1-contracts/out/Ballot.sol/BallotLib.json +1 -1
- package/l1-contracts/out/BlobLib.sol/BlobLib.json +1 -1
- package/l1-contracts/out/Bn254LibWrapper.sol/Bn254LibWrapper.json +1 -1
- package/l1-contracts/out/CheckpointLog.sol/CompressedTempCheckpointLogLib.json +1 -1
- package/l1-contracts/out/CheckpointedUintLib.sol/CheckpointedUintLib.json +1 -1
- package/l1-contracts/out/CoinIssuer.sol/CoinIssuer.json +1 -1
- package/l1-contracts/out/CompressedTimeMath.sol/CompressedTimeMath.json +1 -1
- package/l1-contracts/out/Configuration.sol/CompressedConfigurationLib.json +1 -1
- package/l1-contracts/out/ConfigurationLib.sol/ConfigurationLib.json +1 -1
- package/l1-contracts/out/ConstantsGen.sol/Constants.json +1 -1
- package/l1-contracts/out/CoordinationSignatureLib.sol/CoordinationSignatureLib.json +1 -1
- package/l1-contracts/out/DataStructures.sol/DataStructures.json +1 -1
- package/l1-contracts/out/DateGatedRelayer.sol/DateGatedRelayer.json +1 -1
- package/l1-contracts/out/DeployAztecL1Contracts.s.sol/DeployAztecL1Contracts.json +1 -1
- package/l1-contracts/out/DeployRollupForUpgrade.s.sol/DeployRollupForUpgrade.json +1 -1
- package/l1-contracts/out/DeployRollupLib.sol/DeployRollupLib.json +1 -1
- package/l1-contracts/out/DeploymentConfiguration.sol/DeploymentConfiguration.json +1 -1
- package/l1-contracts/out/DeploymentConfiguration.sol/IDeploymentConfiguration.json +1 -1
- package/l1-contracts/out/DepositDelegationLib.sol/DepositDelegationLib.json +1 -1
- package/l1-contracts/out/EmpireBase.sol/EmpireBase.json +1 -1
- package/l1-contracts/out/EpochProofExtLib.sol/EpochProofExtLib.json +1 -1
- package/l1-contracts/out/EpochProofLib.sol/EpochProofLib.json +1 -1
- package/l1-contracts/out/Errors.sol/Errors.json +1 -1
- package/l1-contracts/out/EscapeHatch.sol/EscapeHatch.json +1 -1
- package/l1-contracts/out/FeeAssetHandler.sol/FeeAssetHandler.json +1 -1
- package/l1-contracts/out/FeeAssetHandler.sol/IFeeAssetHandler.json +1 -1
- package/l1-contracts/out/FeeConfig.sol/FeeConfigLib.json +1 -1
- package/l1-contracts/out/FeeConfig.sol/PriceLib.json +1 -1
- package/l1-contracts/out/FeeJuicePortal.sol/FeeJuicePortal.json +1 -1
- package/l1-contracts/out/FeeLib.sol/FeeLib.json +1 -1
- package/l1-contracts/out/FeeStructs.sol/FeeHeaderLib.json +1 -1
- package/l1-contracts/out/FeeStructs.sol/FeeStructsLib.json +1 -1
- package/l1-contracts/out/FieldLib.sol/FieldLib.json +1 -1
- package/l1-contracts/out/FlushRewarder.sol/FlushRewarder.json +1 -1
- package/l1-contracts/out/GSE.sol/GSE.json +1 -1
- package/l1-contracts/out/GSE.sol/GSECore.json +1 -1
- package/l1-contracts/out/GSE.sol/IGSE.json +1 -1
- package/l1-contracts/out/GSE.sol/IGSECore.json +1 -1
- package/l1-contracts/out/GSEPayload.sol/GSEPayload.json +1 -1
- package/l1-contracts/out/Governance.sol/Governance.json +1 -1
- package/l1-contracts/out/GovernanceProposer.sol/GovernanceProposer.json +1 -1
- package/l1-contracts/out/Hash.sol/Hash.json +1 -1
- package/l1-contracts/out/HonkVerifier.sol/HonkVerifier.json +1 -1
- package/l1-contracts/out/IBn254LibWrapper.sol/IBn254LibWrapper.json +1 -1
- package/l1-contracts/out/ICoinIssuer.sol/ICoinIssuer.json +1 -1
- package/l1-contracts/out/IDateGatedRelayer.sol/IDateGatedRelayer.json +1 -1
- package/l1-contracts/out/IEmpire.sol/IEmperor.json +1 -1
- package/l1-contracts/out/IEmpire.sol/IEmpire.json +1 -1
- package/l1-contracts/out/IFeeJuicePortal.sol/IFeeJuicePortal.json +1 -1
- package/l1-contracts/out/IFlushRewarder.sol/IFlushRewarder.json +1 -1
- package/l1-contracts/out/IGovernance.sol/IGovernance.json +1 -1
- package/l1-contracts/out/IGovernanceProposer.sol/IGovernanceProposer.json +1 -1
- package/l1-contracts/out/IInbox.sol/IInbox.json +1 -1
- package/l1-contracts/out/IInstance.sol/IInstance.json +1 -1
- package/l1-contracts/out/IMintableERC20.sol/IMintableERC20.json +1 -1
- package/l1-contracts/out/IOutbox.sol/IOutbox.json +1 -1
- package/l1-contracts/out/IPayload.sol/IPayload.json +1 -1
- package/l1-contracts/out/IProposerPayload.sol/IProposerPayload.json +1 -1
- package/l1-contracts/out/IRegistry.sol/IHaveVersion.json +1 -1
- package/l1-contracts/out/IRegistry.sol/IRegistry.json +1 -1
- package/l1-contracts/out/IRewardDistributor.sol/IRewardDistributor.json +1 -1
- package/l1-contracts/out/IRollup.sol/IRollup.json +1 -1
- package/l1-contracts/out/IRollup.sol/IRollupCore.json +1 -1
- package/l1-contracts/out/IRootRegistry.sol/IRootRegistry.json +1 -1
- package/l1-contracts/out/ISequencerRewardCalculator.sol/ISequencerRewardCalculator.json +1 -0
- package/l1-contracts/out/ISlasher.sol/ISlasher.json +1 -1
- package/l1-contracts/out/IStaking.sol/IStaking.json +1 -1
- package/l1-contracts/out/IStaking.sol/IStakingCore.json +1 -1
- package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelection.json +1 -1
- package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelectionCore.json +1 -1
- package/l1-contracts/out/IVerifier.sol/IVerifier.json +1 -1
- package/l1-contracts/out/Inbox.sol/Inbox.json +1 -1
- package/l1-contracts/out/InputsExtractor.sol/InputsExtractor.json +1 -1
- package/l1-contracts/out/InvalidateLib.sol/InvalidateLib.json +1 -1
- package/l1-contracts/out/MerkleLib.sol/MerkleLib.json +1 -1
- package/l1-contracts/out/MockERC20.sol/MockERC20.json +1 -1
- package/l1-contracts/out/MockERC721.sol/MockERC721.json +1 -1
- package/l1-contracts/out/MockFeeJuicePortal.sol/MockFeeJuicePortal.json +1 -1
- package/l1-contracts/out/MockVerifier.sol/MockVerifier.json +1 -1
- package/l1-contracts/out/MockZKPassportVerifier.sol/IZKPassportVerifier.json +1 -1
- package/l1-contracts/out/MockZKPassportVerifier.sol/MockZKPassportVerifier.json +1 -1
- package/l1-contracts/out/MultiAdder.sol/IMultiAdder.json +1 -1
- package/l1-contracts/out/MultiAdder.sol/MultiAdder.json +1 -1
- package/l1-contracts/out/Outbox.sol/Outbox.json +1 -1
- package/l1-contracts/out/OuterCount8.sol/HonkVerifier.json +1 -1
- package/l1-contracts/out/Proposal.sol/CompressedProposalLib.json +1 -1
- package/l1-contracts/out/ProposalLib.sol/ProposalLib.json +1 -1
- package/l1-contracts/out/ProposeLib.sol/ProposeLib.json +1 -1
- package/l1-contracts/out/ProposedHeaderLib.sol/ProposedHeaderLib.json +1 -1
- package/l1-contracts/out/RegisterNewRollupVersionPayload.sol/RegisterNewRollupVersionPayload.json +1 -1
- package/l1-contracts/out/Registry.sol/Registry.json +1 -1
- package/l1-contracts/out/RewardBooster.sol/IBooster.json +1 -1
- package/l1-contracts/out/RewardBooster.sol/IBoosterCore.json +1 -1
- package/l1-contracts/out/RewardBooster.sol/RewardBooster.json +1 -1
- package/l1-contracts/out/RewardDistributor.sol/RewardDistributor.json +1 -1
- package/l1-contracts/out/RewardExtLib.sol/RewardExtLib.json +1 -1
- package/l1-contracts/out/RewardLib.sol/BpsLib.json +1 -1
- package/l1-contracts/out/RewardLib.sol/RewardLib.json +1 -1
- package/l1-contracts/out/Rollup.sol/Rollup.json +1 -1
- package/l1-contracts/out/RollupConfiguration.sol/IRollupConfiguration.json +1 -1
- package/l1-contracts/out/RollupConfiguration.sol/RollupConfiguration.json +1 -1
- package/l1-contracts/out/RollupCore.sol/RollupCore.json +1 -1
- package/l1-contracts/out/RollupOperationsExtLib.sol/RollupOperationsExtLib.json +1 -1
- package/l1-contracts/out/STFLib.sol/STFLib.json +1 -1
- package/l1-contracts/out/SampleLib.sol/SampleLib.json +1 -1
- package/l1-contracts/out/SequencerRewardCalculatorLib.sol/SequencerRewardCalculatorLib.json +1 -0
- package/l1-contracts/out/SignatureLib.sol/SignatureLib.json +1 -1
- package/l1-contracts/out/SlashPayload.sol/SlashPayload.json +1 -1
- package/l1-contracts/out/SlashPayloadCloneable.sol/SlashPayloadCloneable.json +1 -1
- package/l1-contracts/out/SlashPayloadLib.sol/SlashPayloadLib.json +1 -1
- package/l1-contracts/out/SlashRoundLib.sol/CompressedSlashRoundMath.json +1 -1
- package/l1-contracts/out/Slasher.sol/Slasher.json +1 -1
- package/l1-contracts/out/SlasherDeploymentExtLib.sol/SlasherDeploymentExtLib.json +1 -1
- package/l1-contracts/out/SlashingProposer.sol/SlashingProposer.json +1 -1
- package/l1-contracts/out/StakingAssetHandler.sol/IStakingAssetHandler.json +1 -1
- package/l1-contracts/out/StakingAssetHandler.sol/StakingAssetHandler.json +1 -1
- package/l1-contracts/out/StakingLib.sol/StakingLib.json +1 -1
- package/l1-contracts/out/StakingQueue.sol/StakingQueueLib.json +1 -1
- package/l1-contracts/out/StakingQueueConfig.sol/StakingQueueConfigLib.json +1 -1
- package/l1-contracts/out/StdError.sol/stdError.json +1 -1
- package/l1-contracts/out/TestERC20.sol/TestERC20.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/CallAssetPayload.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/CallRevertingPayload.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/EmptyPayload.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/FakeRollup.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/RevertingCall.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/UpgradePayload.json +1 -1
- package/l1-contracts/out/TimeLib.sol/TimeLib.json +1 -1
- package/l1-contracts/out/Tips.sol/ChainTipsLib.json +1 -1
- package/l1-contracts/out/ValidatorOperationsExtLib.sol/ValidatorOperationsExtLib.json +1 -1
- package/l1-contracts/out/ValidatorSelectionLib.sol/ValidatorSelectionLib.json +1 -1
- package/l1-contracts/out/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
- package/l1-contracts/out/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
- package/l1-contracts/out/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
- package/l1-contracts/out/build-info/4cb7b5442b848dcc.json +1 -0
- package/l1-contracts/out/generated/HonkVerifier.sol/HonkVerifier.json +1 -1
- package/l1-contracts/out/libraries/Errors.sol/Errors.json +1 -1
- package/l1-contracts/out/rollup/BlobLib.sol/BlobLib.json +1 -1
- package/l1-contracts/out/src/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
- package/l1-contracts/out/src/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
- package/l1-contracts/out/src/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
- package/l1-contracts/script/deploy/RollupConfiguration.sol +5 -19
- package/l1-contracts/scripts/network-defaults.json +1 -2
- package/l1-contracts/src/core/Rollup.sol +18 -12
- package/l1-contracts/src/core/RollupCore.sol +14 -27
- package/l1-contracts/src/core/interfaces/IRollup.sol +7 -11
- package/l1-contracts/src/core/interfaces/ISequencerRewardCalculator.sol +39 -0
- package/l1-contracts/src/core/interfaces/IValidatorSelection.sol +0 -2
- package/l1-contracts/src/core/libraries/Errors.sol +3 -6
- package/l1-contracts/src/core/libraries/rollup/BlobLib.sol +16 -6
- package/l1-contracts/src/core/libraries/rollup/EpochProofExtLib.sol +2 -7
- package/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +4 -12
- package/l1-contracts/src/core/libraries/rollup/RewardExtLib.sol +30 -12
- package/l1-contracts/src/core/libraries/rollup/RewardLib.sol +187 -250
- package/l1-contracts/src/core/libraries/rollup/SequencerRewardCalculatorLib.sol +110 -0
- package/l1-contracts/src/core/libraries/rollup/ValidatorSelectionLib.sol +2 -4
- package/package.json +1 -1
- package/l1-contracts/out/RewardLib.sol/IATP.json +0 -1
- package/l1-contracts/out/RewardLib.sol/IATPStaker.json +0 -1
- package/l1-contracts/out/build-info/f88e638ee47a1ead.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"constructor","inputs":[{"name":"__owner","type":"address","internalType":"address"},{"name":"_asset","type":"address","internalType":"contract IERC20"},{"name":"_activationThreshold","type":"uint256","internalType":"uint256"},{"name":"_ejectionThreshold","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"ACTIVATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ASSET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"BONUS_INSTANCE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"EJECTION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addRollup","inputs":[{"name":"_rollup","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegate","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"},{"name":"_delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_withdrawer","type":"address","internalType":"address"},{"name":"_publicKeyInG1","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_publicKeyInG2","type":"tuple","internalType":"struct G2Point","components":[{"name":"x0","type":"uint256","internalType":"uint256"},{"name":"x1","type":"uint256","internalType":"uint256"},{"name":"y0","type":"uint256","internalType":"uint256"},{"name":"y1","type":"uint256","internalType":"uint256"}]},{"name":"_proofOfPossession","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_moveWithLatestRollup","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeWithdraw","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getGovernance","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Governance"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollup","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollupAt","inputs":[{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRollupRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownedPKs","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"isRegistered","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proofOfPossessionGasLimit","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"proposeWithLock","inputs":[{"name":"_payload","type":"address","internalType":"contract IPayload"},{"name":"_to","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGovernance","inputs":[{"name":"_governance","type":"address","internalType":"contract Governance"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProofOfPossessionGasLimit","inputs":[{"name":"_proofOfPossessionGasLimit","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vote","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"voteWithBonus","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"DelegateChanged","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"oldDelegatee","type":"address","indexed":false,"internalType":"address"},{"name":"newDelegatee","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegatee","type":"address","indexed":true,"internalType":"address"},{"name":"oldValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"instance","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero","inputs":[]},{"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"size","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"Delegation__InsufficientPower","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__AlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__CannotChangePublicKeys","inputs":[{"name":"existingPk1x","type":"uint256","internalType":"uint256"},{"name":"existingPk1y","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__FailedToRemove","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__GovernanceAlreadySet","inputs":[]},{"type":"error","name":"GSE__InstanceDoesNotExist","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__InsufficientBalance","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__InvalidProofOfPossession","inputs":[]},{"type":"error","name":"GSE__InvalidRollupAddress","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotLatestRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotWithdrawer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NothingToExit","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__ProofOfPossessionAlreadySeen","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"GSE__RollupAlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__CheckpointedUintLib__NotInPast","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x61010060405260405161001190610164565b604051809103905ff08015801561002a573d5f5f3e3d5ffd5b506001600160a01b031660805260088054600160a01b600160e01b031916613d0960a41b17905534801561005c575f5ffd5b5060405161362038038061362083398101604081905261007b91610188565b836001600160a01b0381166100a957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100b281610115565b506001600160a01b0390921660e05260a05260c05250739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020527f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51a805460ff191660011790556101cd565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a5c80612bc483390190565b6001600160a01b0381168114610185575f5ffd5b50565b5f5f5f5f6080858703121561019b575f5ffd5b84516101a681610171565b60208601519094506101b781610171565b6040860151606090960151949790965092505050565b60805160a05160c05160e05161298561023f5f395f81816101d6015281816105dc0152818161061b01528181610a910152610afc01525f81816103220152610ee001525f81816102e801528181610a6001528181610ab501528181610b2b0152610bba01525f6114eb01526129855ff3fe608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80636a915516116100bf578063b4ac453611610079578063b4ac4536146102e3578063d3da927f1461030a578063dbc857521461031d578063f2fde38b14610344578063f3fef3a314610357578063f852fef914610385575f5ffd5b80636a91551614610289578063710ca3541461029c578063715018a6146102b05780638da5cb5b146102b8578063ab033ea9146102c8578063b35186a8146102db575f5ffd5b80634bd96ece116101105780634bd96ece146101f857806352097e4e1461022a57806352f44a141461023d57806359264f00146102505780636902c67b146102635780636a18ff7a14610276575f5ffd5b80630928d152146101575780630e9f7e431461016c578063289b3c0d1461017f5780632e341ce01461019d57806330eb4bdd146101b05780634800d97f146101d1575b5f5ffd5b61016a61016536600461227e565b6103b7565b005b61016a61017a366004612295565b61048c565b6101876104c1565b60405161019491906122bb565b60405180910390f35b61016a6101ab3660046122e3565b6104d0565b6101c36101be36600461232b565b61055a565b604051908152602001610194565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b61021a61020636600461227e565b60046020525f908152604090205460ff1681565b6040519015158152602001610194565b61016a61023836600461237f565b610767565b61021a61024b3660046123aa565b6107c1565b61016a61025e3660046123aa565b6107e1565b61016a6102713660046124e1565b61089a565b61016a61028436600461237f565b610c65565b61018761029736600461227e565b610c71565b6101875f5160206129305f395f51905f5281565b61016a610c97565b5f546001600160a01b0316610187565b61016a6102d63660046123aa565b610caa565b610187610cfd565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61021a61031836600461232b565b610d10565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61016a6103523660046123aa565b610d38565b61036a61036536600461258e565b610d75565b60408051938452911515602084015290820152606001610194565b60085461039f90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610194565b5f6103c06104c1565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa158015610406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042a91906125c3565b606001516104885760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610471575f5ffd5b505af1158015610483573d5f5f3e3d5ffd5b505050505b5050565b610494610fe2565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6008546001600160a01b031690565b6104d9836107c1565b8390610502576040516330d32d8760e21b81526004016104f991906122bb565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461054457604051630257d8d760e41b81526004016104f9929190612618565b506105549050600585858561100e565b50505050565b5f5f6105646104c1565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190612632565b516020015190506106046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110d9565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061065290859085906004016126d8565b6020604051808303815f875af115801561066e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069291906126f1565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef24906106c190309085906004016126d8565b5f604051808303815f87803b1580156106d8575f5ffd5b505af11580156106ea573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd915061071c9088908890600401612618565b6020604051808303815f875af1158015610738573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075c919061270c565b925050505b92915050565b5f61077184611133565b905061077c81610c71565b33906001600160a01b031681146107a7576040516305df8ea560e31b81526004016104f991906122bb565b506105545f5160206129305f395f51905f528585856111be565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b6107e9610fe2565b806001600160a01b038116610812576040516327bac29760e21b81526004016104f991906122bb565b506001600160a01b0381165f90815260026020526040902060030154819060ff16156108515760405162cea8b160e11b81526004016104f991906122bb565b506001600160a01b0381165f908152600260205260409020600301805460ff191660011790556108956108834261124d565b6001906001600160a01b038416611281565b505050565b6108a3336107c1565b33906108c3576040516319aaa75960e11b81526004016104f991906122bb565b505f336108ce610cfd565b6001600160a01b03161490508115610902573381610900576040516305df8ea560e31b81526004016104f991906122bb565b505b61090c3388610d10565b153388909161093057604051630d75cd7760e11b81526004016104f9929190612618565b505080156109835761094f5f5160206129305f395f51905f5288610d10565b5f5160206129305f395f51905f529088901561098057604051630d75cd7760e11b81526004016104f9929190612618565b50505b5f8261098f573361099e565b5f5160206129305f395f51905f525b6001600160a01b0381165f9081526002602052604090209091506109c2908961129b565b818990916109e557604051630d75cd7760e11b81526004016104f9929190612618565b50506109f3888787876113d5565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610a576005828a8161100e565b610a846005828a7f0000000000000000000000000000000000000000000000000000000000000000611599565b610ad96001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f00000000000000000000000000000000000000000000000000000000000000006110d9565b5f610ae26104c1565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610b539084907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b6020604051808303815f875af1158015610b6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9391906126f1565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef2490610be29030907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b5f604051808303815f87803b158015610bf9575f5ffd5b505af1158015610c0b573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a604051610c5291906122bb565b60405180910390a3505050505050505050565b610895338484846111be565b5f610761610c89610c818461124d565b600190611628565b6001600160e01b031661167d565b610c9f610fe2565b610ca85f6116b0565b565b610cb2610fe2565b6008546001600160a01b031615610cdb576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f610d0b610c8960016116ff565b905090565b6001600160a01b0382165f908152600260205260408120610d319083611736565b9392505050565b610d40610fe2565b6001600160a01b038116610d69575f604051631e4fbdf760e01b81526004016104f991906122bb565b610d72816116b0565b50565b5f5f5f610d81336107c1565b3390610da1576040516319aaa75960e11b81526004016104f991906122bb565b50335f81815260026020526040812090610dbb8289611736565b905080158015610dda575033610dcf610cfd565b6001600160a01b0316145b8015610e275750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f526002602052610e277f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51789611736565b15610e7d575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206129305f395f51905f527f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51760015b8781610e9d5760405163417f3a0560e01b81526004016104f991906122bb565b505f610eab6005858b611757565b9050808880821015610ed957604051635087517f60e11b8152600481019290925260248201526044016104f9565b508890505f7f0000000000000000000000000000000000000000000000000000000000000000610f098385612737565b1090508015610f4c57610f1c858c61177e565b8b90610f3c576040516304ca9e7360e31b81526004016104f991906122bb565b50829150610f4c6005878d6117e7565b610f596005878d856117f3565b5f610f626104c1565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b8152600401610f8f9291906126d8565b6020604051808303815f875af1158015610fab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcf919061270c565b929c919b50919950975050505050505050565b5f546001600160a01b03163314610ca8573360405163118cdaa760e01b81526004016104f991906122bb565b6001600160a01b038381165f908152602086815260408083208685168452909152902060010154811690821681036110465750610554565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f906110b49084908690612618565b60405180910390a26110d28582846110cd898989611757565b61187a565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526105549085906119b3565b5f5f61113d6104c1565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b815260040161116a91815260200190565b6101a060405180830381865afa158015611186573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111aa9190612787565b6080810151815151919250610d3191611a16565b5f6111c884611133565b90506111d8600586868487611a21565b6111e06104c1565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b158015611230575f5ffd5b505af1158015611242573d5f5f3e3d5ffd5b505050505050505050565b5f63ffffffff82111561127d576040516306dfcc6560e41b815260206004820152602481018390526044016104f9565b5090565b5f8061128e858585611aec565b915091505b935093915050565b5f6001600160a01b0382166112c25760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156112eb57505f610761565b5f6112f5846116ff565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b0319161761010091909216021790559091506113654261124d565b905061139d8161137d866001600160a01b0316611c30565b6001600160e01b0385165f90815260018901602052604090209190611281565b506113c89050816113c06113b285600161285c565b6001600160e01b0316611c30565b879190611281565b5060019695505050505050565b6001600160a01b0384165f90815260036020908152604091829020825180840190935280548084526001909101549183019190915215801561141957506020810151155b815160208301519091611448576040516312d6323b60e11b8152600481019290925260248201526044016104f9565b50505f845f0151856020015160405160200161146e929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff16156114bb57604051636ab4baeb60e11b81526004016104f991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b03169161153c918a918a918a910161287b565b6020604051808303818786fa158015611557573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157c91906126f1565b6104835760405163df4ff27b60e01b815260040160405180910390fd5b8015610554576001600160a01b038084165f90815260208681526040808320938616835290839052812080548492906115d39084906128ca565b90915550506001600160a01b038084165f9081526020839052604081206001015461160292889291168561187a565b61160f6001820183611c63565b5061161f90506002860183611c63565b50505050505050565b81545f908161163985858385611cdd565b905080156116735761165d85611650600184612737565b5f91825260209091200190565b54600160201b90046001600160e01b031661075c565b505f949350505050565b5f6001600160a01b0382111561127d576040516306dfcc6560e41b815260a06004820152602481018390526044016104f9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80545f90801561172e5761171883611650600184612737565b54600160201b90046001600160e01b0316610d31565b5f9392505050565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906117d0575f915050610761565b6117df84826020015185611d38565b949350505050565b6108958383835f61100e565b8015610554576001600160a01b038084165f908152602086815260408083209386168352908390528120805484929061182d908490612737565b90915550506001600160a01b038084165f9081526020839052604081206001015461185d9288929116908561187a565b61186a6001820183611f55565b5061161f90506002860183611f55565b816001600160a01b0316836001600160a01b03161480611898575080155b610554576001600160a01b03831615611925576001600160a01b0383165f90815260018086016020526040822082916118d2910184611f55565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161191a929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610554576001600160a01b0382165f908152600180860160205260408220829161195b910184611c63565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119a3929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af1806119d2576040513d5f823e3d81fd5b50505f513d915081156119e95780600114156119f6565b6001600160a01b0384163b155b156105545783604051635274afe760e01b81526004016104f991906122bb565b5f610d3182846128ca565b5f611a2d868685612002565b6001600160a01b0386165f9081526001880160209081526040808320888452909152902054909150611a5f83826128ca565b8210158683611a6e86856128ca565b909192611aa75760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016104f9565b5050506001600160a01b0386165f908152600188016020908152604080832088845290915281208054859290611ade9084906128ca565b909155505050505050505050565b82545f9081908015611bd8575f611b0887611650600185612737565b805490915063ffffffff80821691600160201b90046001600160e01b0316908816821115611b4957604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff1603611b7c57825463ffffffff16600160201b6001600160e01b03891602178355611bca565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061129392505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081611293565b5f6001600160e01b0382111561127d576040516306dfcc6560e41b815260e06004820152602481018390526044016104f9565b5f5f5f611c6f856116ff565b9050835f03611c8b576001600160e01b03169150819050611cd6565b5f611c9585611c30565b9050611cb5611ca34261124d565b611cad838561285c565b889190611281565b50829050611cc3828261285c565b6001600160e01b03918216955016925050505b9250929050565b5f5b81831015611d30575f611cf28484612027565b5f8781526020902090915063ffffffff86169082015463ffffffff161115611d1c57809250611d2a565b611d278160016128ca565b93505b50611cdf565b509392505050565b5f80611d43856116ff565b9050806001600160e01b0316846001600160e01b031610611d8a57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016104f9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b0390941693909302929092179055611df96001836128dd565b90505f611e054261124d565b9050856001600160e01b0316826001600160e01b031614611f02576001600160e01b0382165f9081526001880160205260408120611e4690610c89906116ff565b90506040518060400160405280600115158152602001611e6e896001600160e01b0316611c30565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b031990941693909317929092179055611efe908390611ede90611c30565b6001600160e01b038a165f90815260018c01602052604090209190611281565b5050505b6001600160e01b0382165f9081526001880160205260408120611f26918390611281565b5050611f4681611f3e846001600160e01b0316611c30565b899190611281565b50600198975050505050505050565b5f5f5f611f61856116ff565b9050835f03611f7d576001600160e01b03169150819050611cd6565b5f611f8785611c30565b90503382826001600160e01b038082169083161015611fdb5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016104f9565b505050611ff4611fea4261124d565b611cad83856128dd565b50829050611cc382826128dd565b6001600160a01b0382165f9081526001808501602052604082206117df910183612041565b5f6120356002848418612910565b610d31908484166128ca565b5f61204b82421190565b612068576040516334dcb7d760e21b815260040160405180910390fd5b61207b6120748361124d565b849061208b565b6001600160e01b03169392505050565b81545f90818160058111156120e5575f6120a48461212c565b6120ae9085612737565b5f8881526020902090915081015463ffffffff90811690871610156120d5578091506120e3565b6120e08160016128ca565b92505b505b5f6120f287878585611cdd565b9050801561211f5761210987611650600184612737565b54600160201b90046001600160e01b0316612121565b5f5b979650505050505050565b5f60018211612139575090565b816001600160801b82106121525760809190911c9060401b5b600160401b82106121685760409190911c9060201b5b600160201b821061217e5760209190911c9060101b5b6201000082106121935760109190911c9060081b5b61010082106121a75760089190911c9060041b5b601082106121ba5760049190911c9060021b5b600482106121c65760011b5b600302600190811c908185816121de576121de6128fc565b048201901c905060018185816121f6576121f66128fc565b048201901c9050600181858161220e5761220e6128fc565b048201901c90506001818581612226576122266128fc565b048201901c9050600181858161223e5761223e6128fc565b048201901c90506001818581612256576122566128fc565b048201901c905061227581858161226f5761226f6128fc565b04821190565b90039392505050565b5f6020828403121561228e575f5ffd5b5035919050565b5f602082840312156122a5575f5ffd5b81356001600160401b0381168114610d31575f5ffd5b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610d72575f5ffd5b5f5f5f606084860312156122f5575f5ffd5b8335612300816122cf565b92506020840135612310816122cf565b91506040840135612320816122cf565b809150509250925092565b5f5f6040838503121561233c575f5ffd5b8235612347816122cf565b91506020830135612357816122cf565b809150509250929050565b8015158114610d72575f5ffd5b803561237a81612362565b919050565b5f5f5f60608486031215612391575f5ffd5b8335925060208401359150604084013561232081612362565b5f602082840312156123ba575f5ffd5b8135610d31816122cf565b604080519081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405290565b604051608081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b5f604082840312156124c2575f5ffd5b6124ca6123c5565b823581526020928301359281019290925250919050565b5f5f5f5f5f5f8688036101608112156124f8575f5ffd5b8735612503816122cf565b96506020880135612513816122cf565b95506125228960408a016124b2565b94506080607f1982011215612535575f5ffd5b5061253e6123f9565b6080880135815260a0880135602082015260c0880135604082015260e0880135606082015292506125738861010089016124b2565b9150612582610140880161236f565b90509295509295509295565b5f5f6040838503121561259f575f5ffd5b82356125aa816122cf565b946020939093013593505050565b805161237a816122cf565b5f60808284031280156125d4575f5ffd5b506125dd6123f9565b825181526020808401519082015260408301516125f9816122cf565b6040820152606083015161260c81612362565b60608201529392505050565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015612645575f5ffd5b5061264e612427565b604082121561265b575f5ffd5b6126636123c5565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215612701575f5ffd5b8151610d3181612362565b5f6020828403121561271c575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561076157610761612723565b80516009811061237a575f5ffd5b5f60408284031215612768575f5ffd5b6127706123c5565b825181526020928301519281019290925250919050565b5f8183036101a08112801561279a575f5ffd5b506127a3612456565b60e08212156127b0575f5ffd5b6127b8612484565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c08086015190820152808252915061280960e0850161274a565b602082015261281b61010085016125b8565b604082015261282d61012085016125b8565b606082015261014084015160808201819052915061284f856101608601612758565b60a0820152949350505050565b6001600160e01b03818116838216019081111561076157610761612723565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526117df60c083018480518252602090810151910152565b8082018082111561076157610761612723565b6001600160e01b03828116828216039081111561076157610761612723565b634e487b7160e01b5f52601260045260245ffd5b5f8261292a57634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a8a264697066735822122018405c2380eaeaff7885572f92668cfc0597fdfbe84420ff1879e7409839685964736f6c634300081e00336080604052348015600e575f5ffd5b50610a408061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80633f78271d14610038578063e98bc44414610060575b5f5ffd5b61004b61004636600461088b565b61008e565b60405190151581526020015b60405180910390f35b61007361006e36600461092f565b6100a2565b60408051825181526020928301519281019290925201610057565b5f61009a8484846100c4565b949350505050565b604080518082019091525f80825260208201526100be826101e4565b92915050565b5f6100ce84610256565b156100ec5760405163204cab4d60e21b815260040160405180910390fd5b6100f58361026b565b156101135760405163204cab4d60e21b815260040160405180910390fd5b61011c82610256565b1561013a5760405163204cab4d60e21b815260040160405180910390fd5b5f610144856101e4565b90505f61015286868661029c565b9050805f0361017457604051631262b41360e01b815260040160405180910390fd5b5f61018885610183898561033c565b6103a3565b90505f6101c3846101836101bd6040805180820182525f80825260209182015281518083019092526001825260029082015290565b8661033c565b90506101d8826101d161040e565b838a6104db565b98975050505050505050565b604080518082019091525f80825260208201525f825f0151836020015160405160200161021b929190918252602082015260400190565b604051602081830303815290604052905061024f75415a5445435f424c535f504f505f424e3235345f563160501b82610598565b9392505050565b80515f901580156100be575050602001511590565b80515f9015801561027e57506020820151155b801561028c57506040820151155b80156100be575050606001511590565b82516020808501518451858301516040808801516060808a015189518a8901518551808b019b909b528a86019890985291890195909552608088019390935260a087015260c086019290925260e0850152610100808501929092528051808503909201825261012090930190925281519101205f9061009a907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190610949565b604080518082019091525f80825260208201526103576107b9565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa90508061039b57604051635d90883360e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526103be6107d7565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508061039b57604051635d3761b560e11b815260040160405180910390fd5b61043560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec815250905090565b5f6104e46107f5565b85518152602080870151818301528581015160408084019190915286516060808501919091528088015160808501528188015160a0850152865160c08501528683015160e085015291850151610100840152845161012084015290840151610140830152830151610160820152610559610814565b5f6020826101808560086107d05a03fa9050806105895760405163a158f26960e01b815260040160405180910390fd5b50516001149695505050505050565b604080518082019091525f80825260208201525f805b5f8585836040516020016105c493929190610968565b60408051601f1981840301815291905280516020909101209050816105e8816109bf565b9250505f5160206109eb5f395f51905f52811061060557506105ae565b5f5f5160206109eb5f395f51905f5282830990505f5160206109eb5f395f51905f5282820990505f5160206109eb5f395f51905f5260038208905061064981610716565b9450905083156106f157805f61066c825f5160206109eb5f395f51905f526109d7565b90508082111561067857905b5f89895f1960405160200161068f93929190610968565b604051602081830303815290604052805190602001205f1c9050806001165f036106cf5760405180604001604052808681526020018481525097506106e7565b60405180604001604052808681526020018381525097505b50505050506106f8565b50506105ae565b8161039b57604051633d7f3d1d60e21b815260040160405180910390fd5b5f5f5f60405160208152602080820152602060408201528460608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206109eb5f395f51905f5260a082015260208160c08360056107d05a03fa9051935090505f5160206109eb5f395f51905f5283800984149150806107b357604051634ccc085960e11b815260040160405180910390fd5b50915091565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5f60408284031215610842575f5ffd5b6040805190810167ffffffffffffffff8111828210171561087157634e487b7160e01b5f52604160045260245ffd5b604052823581526020928301359281019290925250919050565b5f5f5f83850361010081121561089f575f5ffd5b6108a98686610832565b93506080603f19820112156108bc575f5ffd5b506040516080810167ffffffffffffffff811182821017156108ec57634e487b7160e01b5f52604160045260245ffd5b6040908152858101358252606080870135602084015260808701359183019190915260a08601359082015291506109268560c08601610832565b90509250925092565b5f6040828403121561093f575f5ffd5b61024f8383610832565b5f8261096357634e487b7160e01b5f52601260045260245ffd5b500690565b838152606060208201525f83518060608401528060208601608085015e5f608082850101526080601f19601f830116840101915050826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016109d0576109d06109ab565b5060010190565b818103818111156100be576100be6109ab56fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220de9df0f3403cc6ba88f84cc9c26bae092407e794597e756c9f14d996d3fccc6364736f6c634300081e0033","sourceMap":"6575:25215:128:-:0;;;9872:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9817:76:128;;;11696:49;;;-1:-1:-1;;;;;;;;11696:49:128;-1:-1:-1;;;11696:49:128;;;12684:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12798:7;-1:-1:-1;;;;;1273:26:35;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:35;;1350:1;1322:31;;;929:51:182;902:18;;1322:31:35;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;12815:14:128;;::::1;;::::0;12835:43:::1;::::0;12884:39:::1;::::0;-1:-1:-1;12929:33:128;::::1;::::0;:9:::1;-1:-1:-1::0;12929:33:128;:40;:47;;-1:-1:-1;;12929:47:128::1;12972:4;12929:47;::::0;;6575:25215;;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;6575:25215:128:-;;;;;;;;:::o;14:131:182:-;-1:-1:-1;;;;;89:31:182;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:628::-;263:6;271;279;287;340:3;328:9;319:7;315:23;311:33;308:53;;;357:1;354;347:12;308:53;389:9;383:16;408:31;433:5;408:31;:::i;:::-;508:2;493:18;;487:25;458:5;;-1:-1:-1;521:33:182;487:25;521:33;:::i;:::-;646:2;631:18;;625:25;742:2;727:18;;;721:25;150:628;;573:7;;-1:-1:-1;150:628:182;-1:-1:-1;;;150:628:182:o;783:203::-;6575:25215:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80636a915516116100bf578063b4ac453611610079578063b4ac4536146102e3578063d3da927f1461030a578063dbc857521461031d578063f2fde38b14610344578063f3fef3a314610357578063f852fef914610385575f5ffd5b80636a91551614610289578063710ca3541461029c578063715018a6146102b05780638da5cb5b146102b8578063ab033ea9146102c8578063b35186a8146102db575f5ffd5b80634bd96ece116101105780634bd96ece146101f857806352097e4e1461022a57806352f44a141461023d57806359264f00146102505780636902c67b146102635780636a18ff7a14610276575f5ffd5b80630928d152146101575780630e9f7e431461016c578063289b3c0d1461017f5780632e341ce01461019d57806330eb4bdd146101b05780634800d97f146101d1575b5f5ffd5b61016a61016536600461227e565b6103b7565b005b61016a61017a366004612295565b61048c565b6101876104c1565b60405161019491906122bb565b60405180910390f35b61016a6101ab3660046122e3565b6104d0565b6101c36101be36600461232b565b61055a565b604051908152602001610194565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b61021a61020636600461227e565b60046020525f908152604090205460ff1681565b6040519015158152602001610194565b61016a61023836600461237f565b610767565b61021a61024b3660046123aa565b6107c1565b61016a61025e3660046123aa565b6107e1565b61016a6102713660046124e1565b61089a565b61016a61028436600461237f565b610c65565b61018761029736600461227e565b610c71565b6101875f5160206129305f395f51905f5281565b61016a610c97565b5f546001600160a01b0316610187565b61016a6102d63660046123aa565b610caa565b610187610cfd565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61021a61031836600461232b565b610d10565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61016a6103523660046123aa565b610d38565b61036a61036536600461258e565b610d75565b60408051938452911515602084015290820152606001610194565b60085461039f90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610194565b5f6103c06104c1565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa158015610406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042a91906125c3565b606001516104885760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610471575f5ffd5b505af1158015610483573d5f5f3e3d5ffd5b505050505b5050565b610494610fe2565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6008546001600160a01b031690565b6104d9836107c1565b8390610502576040516330d32d8760e21b81526004016104f991906122bb565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461054457604051630257d8d760e41b81526004016104f9929190612618565b506105549050600585858561100e565b50505050565b5f5f6105646104c1565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190612632565b516020015190506106046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110d9565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061065290859085906004016126d8565b6020604051808303815f875af115801561066e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069291906126f1565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef24906106c190309085906004016126d8565b5f604051808303815f87803b1580156106d8575f5ffd5b505af11580156106ea573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd915061071c9088908890600401612618565b6020604051808303815f875af1158015610738573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075c919061270c565b925050505b92915050565b5f61077184611133565b905061077c81610c71565b33906001600160a01b031681146107a7576040516305df8ea560e31b81526004016104f991906122bb565b506105545f5160206129305f395f51905f528585856111be565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b6107e9610fe2565b806001600160a01b038116610812576040516327bac29760e21b81526004016104f991906122bb565b506001600160a01b0381165f90815260026020526040902060030154819060ff16156108515760405162cea8b160e11b81526004016104f991906122bb565b506001600160a01b0381165f908152600260205260409020600301805460ff191660011790556108956108834261124d565b6001906001600160a01b038416611281565b505050565b6108a3336107c1565b33906108c3576040516319aaa75960e11b81526004016104f991906122bb565b505f336108ce610cfd565b6001600160a01b03161490508115610902573381610900576040516305df8ea560e31b81526004016104f991906122bb565b505b61090c3388610d10565b153388909161093057604051630d75cd7760e11b81526004016104f9929190612618565b505080156109835761094f5f5160206129305f395f51905f5288610d10565b5f5160206129305f395f51905f529088901561098057604051630d75cd7760e11b81526004016104f9929190612618565b50505b5f8261098f573361099e565b5f5160206129305f395f51905f525b6001600160a01b0381165f9081526002602052604090209091506109c2908961129b565b818990916109e557604051630d75cd7760e11b81526004016104f9929190612618565b50506109f3888787876113d5565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610a576005828a8161100e565b610a846005828a7f0000000000000000000000000000000000000000000000000000000000000000611599565b610ad96001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f00000000000000000000000000000000000000000000000000000000000000006110d9565b5f610ae26104c1565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610b539084907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b6020604051808303815f875af1158015610b6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9391906126f1565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef2490610be29030907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b5f604051808303815f87803b158015610bf9575f5ffd5b505af1158015610c0b573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a604051610c5291906122bb565b60405180910390a3505050505050505050565b610895338484846111be565b5f610761610c89610c818461124d565b600190611628565b6001600160e01b031661167d565b610c9f610fe2565b610ca85f6116b0565b565b610cb2610fe2565b6008546001600160a01b031615610cdb576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f610d0b610c8960016116ff565b905090565b6001600160a01b0382165f908152600260205260408120610d319083611736565b9392505050565b610d40610fe2565b6001600160a01b038116610d69575f604051631e4fbdf760e01b81526004016104f991906122bb565b610d72816116b0565b50565b5f5f5f610d81336107c1565b3390610da1576040516319aaa75960e11b81526004016104f991906122bb565b50335f81815260026020526040812090610dbb8289611736565b905080158015610dda575033610dcf610cfd565b6001600160a01b0316145b8015610e275750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f526002602052610e277f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51789611736565b15610e7d575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206129305f395f51905f527f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51760015b8781610e9d5760405163417f3a0560e01b81526004016104f991906122bb565b505f610eab6005858b611757565b9050808880821015610ed957604051635087517f60e11b8152600481019290925260248201526044016104f9565b508890505f7f0000000000000000000000000000000000000000000000000000000000000000610f098385612737565b1090508015610f4c57610f1c858c61177e565b8b90610f3c576040516304ca9e7360e31b81526004016104f991906122bb565b50829150610f4c6005878d6117e7565b610f596005878d856117f3565b5f610f626104c1565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b8152600401610f8f9291906126d8565b6020604051808303815f875af1158015610fab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcf919061270c565b929c919b50919950975050505050505050565b5f546001600160a01b03163314610ca8573360405163118cdaa760e01b81526004016104f991906122bb565b6001600160a01b038381165f908152602086815260408083208685168452909152902060010154811690821681036110465750610554565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f906110b49084908690612618565b60405180910390a26110d28582846110cd898989611757565b61187a565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526105549085906119b3565b5f5f61113d6104c1565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b815260040161116a91815260200190565b6101a060405180830381865afa158015611186573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111aa9190612787565b6080810151815151919250610d3191611a16565b5f6111c884611133565b90506111d8600586868487611a21565b6111e06104c1565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b158015611230575f5ffd5b505af1158015611242573d5f5f3e3d5ffd5b505050505050505050565b5f63ffffffff82111561127d576040516306dfcc6560e41b815260206004820152602481018390526044016104f9565b5090565b5f8061128e858585611aec565b915091505b935093915050565b5f6001600160a01b0382166112c25760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156112eb57505f610761565b5f6112f5846116ff565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b0319161761010091909216021790559091506113654261124d565b905061139d8161137d866001600160a01b0316611c30565b6001600160e01b0385165f90815260018901602052604090209190611281565b506113c89050816113c06113b285600161285c565b6001600160e01b0316611c30565b879190611281565b5060019695505050505050565b6001600160a01b0384165f90815260036020908152604091829020825180840190935280548084526001909101549183019190915215801561141957506020810151155b815160208301519091611448576040516312d6323b60e11b8152600481019290925260248201526044016104f9565b50505f845f0151856020015160405160200161146e929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff16156114bb57604051636ab4baeb60e11b81526004016104f991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b03169161153c918a918a918a910161287b565b6020604051808303818786fa158015611557573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157c91906126f1565b6104835760405163df4ff27b60e01b815260040160405180910390fd5b8015610554576001600160a01b038084165f90815260208681526040808320938616835290839052812080548492906115d39084906128ca565b90915550506001600160a01b038084165f9081526020839052604081206001015461160292889291168561187a565b61160f6001820183611c63565b5061161f90506002860183611c63565b50505050505050565b81545f908161163985858385611cdd565b905080156116735761165d85611650600184612737565b5f91825260209091200190565b54600160201b90046001600160e01b031661075c565b505f949350505050565b5f6001600160a01b0382111561127d576040516306dfcc6560e41b815260a06004820152602481018390526044016104f9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80545f90801561172e5761171883611650600184612737565b54600160201b90046001600160e01b0316610d31565b5f9392505050565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906117d0575f915050610761565b6117df84826020015185611d38565b949350505050565b6108958383835f61100e565b8015610554576001600160a01b038084165f908152602086815260408083209386168352908390528120805484929061182d908490612737565b90915550506001600160a01b038084165f9081526020839052604081206001015461185d9288929116908561187a565b61186a6001820183611f55565b5061161f90506002860183611f55565b816001600160a01b0316836001600160a01b03161480611898575080155b610554576001600160a01b03831615611925576001600160a01b0383165f90815260018086016020526040822082916118d2910184611f55565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161191a929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610554576001600160a01b0382165f908152600180860160205260408220829161195b910184611c63565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119a3929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af1806119d2576040513d5f823e3d81fd5b50505f513d915081156119e95780600114156119f6565b6001600160a01b0384163b155b156105545783604051635274afe760e01b81526004016104f991906122bb565b5f610d3182846128ca565b5f611a2d868685612002565b6001600160a01b0386165f9081526001880160209081526040808320888452909152902054909150611a5f83826128ca565b8210158683611a6e86856128ca565b909192611aa75760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016104f9565b5050506001600160a01b0386165f908152600188016020908152604080832088845290915281208054859290611ade9084906128ca565b909155505050505050505050565b82545f9081908015611bd8575f611b0887611650600185612737565b805490915063ffffffff80821691600160201b90046001600160e01b0316908816821115611b4957604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff1603611b7c57825463ffffffff16600160201b6001600160e01b03891602178355611bca565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061129392505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081611293565b5f6001600160e01b0382111561127d576040516306dfcc6560e41b815260e06004820152602481018390526044016104f9565b5f5f5f611c6f856116ff565b9050835f03611c8b576001600160e01b03169150819050611cd6565b5f611c9585611c30565b9050611cb5611ca34261124d565b611cad838561285c565b889190611281565b50829050611cc3828261285c565b6001600160e01b03918216955016925050505b9250929050565b5f5b81831015611d30575f611cf28484612027565b5f8781526020902090915063ffffffff86169082015463ffffffff161115611d1c57809250611d2a565b611d278160016128ca565b93505b50611cdf565b509392505050565b5f80611d43856116ff565b9050806001600160e01b0316846001600160e01b031610611d8a57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016104f9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b0390941693909302929092179055611df96001836128dd565b90505f611e054261124d565b9050856001600160e01b0316826001600160e01b031614611f02576001600160e01b0382165f9081526001880160205260408120611e4690610c89906116ff565b90506040518060400160405280600115158152602001611e6e896001600160e01b0316611c30565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b031990941693909317929092179055611efe908390611ede90611c30565b6001600160e01b038a165f90815260018c01602052604090209190611281565b5050505b6001600160e01b0382165f9081526001880160205260408120611f26918390611281565b5050611f4681611f3e846001600160e01b0316611c30565b899190611281565b50600198975050505050505050565b5f5f5f611f61856116ff565b9050835f03611f7d576001600160e01b03169150819050611cd6565b5f611f8785611c30565b90503382826001600160e01b038082169083161015611fdb5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016104f9565b505050611ff4611fea4261124d565b611cad83856128dd565b50829050611cc382826128dd565b6001600160a01b0382165f9081526001808501602052604082206117df910183612041565b5f6120356002848418612910565b610d31908484166128ca565b5f61204b82421190565b612068576040516334dcb7d760e21b815260040160405180910390fd5b61207b6120748361124d565b849061208b565b6001600160e01b03169392505050565b81545f90818160058111156120e5575f6120a48461212c565b6120ae9085612737565b5f8881526020902090915081015463ffffffff90811690871610156120d5578091506120e3565b6120e08160016128ca565b92505b505b5f6120f287878585611cdd565b9050801561211f5761210987611650600184612737565b54600160201b90046001600160e01b0316612121565b5f5b979650505050505050565b5f60018211612139575090565b816001600160801b82106121525760809190911c9060401b5b600160401b82106121685760409190911c9060201b5b600160201b821061217e5760209190911c9060101b5b6201000082106121935760109190911c9060081b5b61010082106121a75760089190911c9060041b5b601082106121ba5760049190911c9060021b5b600482106121c65760011b5b600302600190811c908185816121de576121de6128fc565b048201901c905060018185816121f6576121f66128fc565b048201901c9050600181858161220e5761220e6128fc565b048201901c90506001818581612226576122266128fc565b048201901c9050600181858161223e5761223e6128fc565b048201901c90506001818581612256576122566128fc565b048201901c905061227581858161226f5761226f6128fc565b04821190565b90039392505050565b5f6020828403121561228e575f5ffd5b5035919050565b5f602082840312156122a5575f5ffd5b81356001600160401b0381168114610d31575f5ffd5b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610d72575f5ffd5b5f5f5f606084860312156122f5575f5ffd5b8335612300816122cf565b92506020840135612310816122cf565b91506040840135612320816122cf565b809150509250925092565b5f5f6040838503121561233c575f5ffd5b8235612347816122cf565b91506020830135612357816122cf565b809150509250929050565b8015158114610d72575f5ffd5b803561237a81612362565b919050565b5f5f5f60608486031215612391575f5ffd5b8335925060208401359150604084013561232081612362565b5f602082840312156123ba575f5ffd5b8135610d31816122cf565b604080519081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405290565b604051608081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b5f604082840312156124c2575f5ffd5b6124ca6123c5565b823581526020928301359281019290925250919050565b5f5f5f5f5f5f8688036101608112156124f8575f5ffd5b8735612503816122cf565b96506020880135612513816122cf565b95506125228960408a016124b2565b94506080607f1982011215612535575f5ffd5b5061253e6123f9565b6080880135815260a0880135602082015260c0880135604082015260e0880135606082015292506125738861010089016124b2565b9150612582610140880161236f565b90509295509295509295565b5f5f6040838503121561259f575f5ffd5b82356125aa816122cf565b946020939093013593505050565b805161237a816122cf565b5f60808284031280156125d4575f5ffd5b506125dd6123f9565b825181526020808401519082015260408301516125f9816122cf565b6040820152606083015161260c81612362565b60608201529392505050565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015612645575f5ffd5b5061264e612427565b604082121561265b575f5ffd5b6126636123c5565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215612701575f5ffd5b8151610d3181612362565b5f6020828403121561271c575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561076157610761612723565b80516009811061237a575f5ffd5b5f60408284031215612768575f5ffd5b6127706123c5565b825181526020928301519281019290925250919050565b5f8183036101a08112801561279a575f5ffd5b506127a3612456565b60e08212156127b0575f5ffd5b6127b8612484565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c08086015190820152808252915061280960e0850161274a565b602082015261281b61010085016125b8565b604082015261282d61012085016125b8565b606082015261014084015160808201819052915061284f856101608601612758565b60a0820152949350505050565b6001600160e01b03818116838216019081111561076157610761612723565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526117df60c083018480518252602090810151910152565b8082018082111561076157610761612723565b6001600160e01b03828116828216039081111561076157610761612723565b634e487b7160e01b5f52601260045260245ffd5b5f8261292a57634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a8a264697066735822122018405c2380eaeaff7885572f92668cfc0597fdfbe84420ff1879e7409839685964736f6c634300081e0033","sourceMap":"6575:25215:128:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23479:222;;;;;;:::i;:::-;;:::i;:::-;;13193:176;;;;;;:::i;:::-;;:::i;29180:105::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26171:404;;;;;;:::i;:::-;;:::i;24616:410::-;;;;;;:::i;:::-;;:::i;:::-;;;1989:25:182;;;1977:2;1962:18;24616:410:128;1843:177:182;10349:29:128;;;;;10815:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2599:14:182;;2592:22;2574:41;;2562:2;2547:18;10815:63:128;2434:187:182;27583:316:128;;;;;;:::i;:::-;;:::i;27903:138::-;;;;;;:::i;:::-;;:::i;14182:356::-;;;;;;:::i;:::-;;:::i;16518:2533::-;;;;;;:::i;:::-;;:::i;26987:155::-;;;;;;:::i;:::-;;:::i;28979:197::-;;;;;;:::i;:::-;;:::i;9633:103::-;;-1:-1:-1;;;;;;;;;;;9633:103:128;;2293:101:35;;;:::i;1638:85::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;1638:85;;12985:204:128;;;;;;:::i;:::-;;:::i;28618:131::-;;;:::i;9960:45::-;;;;;28325:174;;;;;;:::i;:::-;;:::i;10172:43::-;;;;;2543:215:35;;;;;;:::i;:::-;;:::i;20097:2942:128:-;;;;;;:::i;:::-;;:::i;:::-;;;;8852:25:182;;;8920:14;;8913:22;8908:2;8893:18;;8886:50;8952:18;;;8945:34;8840:2;8825:18;20097:2942:128;8656:329:182;11696:49:128;;;;;-1:-1:-1;;;11696:49:128;;-1:-1:-1;;;;;11696:49:128;;;;;;-1:-1:-1;;;;;9152:31:182;;;9134:50;;9122:2;9107:18;11696:49:128;8990:200:182;23479:222:128;23562:14;23579:15;:13;:15::i;:::-;23605:32;;-1:-1:-1;;;23605:32:128;;;;;1989:25:182;;;23562:32:128;;-1:-1:-1;;;;;;23605:17:128;;;;;1962:18:182;;23605:32:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;23600:97;;23655:35;;-1:-1:-1;;;23655:35:128;;;;;1989:25:182;;;-1:-1:-1;;;;;23655:20:128;;;;;1962:18:182;;23655:35:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23600:97;23556:145;23479:222;:::o;13193:176::-;1531:13:35;:11;:13::i;:::-;13310:25:128::1;:54:::0;;-1:-1:-1;;;;;13310:54:128;;::::1;-1:-1:-1::0;;;13310:54:128::1;-1:-1:-1::0;;;;13310:54:128;;::::1;::::0;;;::::1;::::0;;13193:176::o;29180:105::-;29270:10;;-1:-1:-1;;;;;29270:10:128;;29180:105::o;26171:404::-;26289:29;26308:9;26289:18;:29::i;:::-;26353:9;26281:83;;;;;-1:-1:-1;;;26281:83:128;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;26391:19:128;;;26370:18;26391:19;;;:8;:19;;;;;:30;;;;;26435:10;:24;;;26427:84;;;;-1:-1:-1;;;26427:84:128;;;;;;;;;:::i;:::-;-1:-1:-1;26517:53:128;;-1:-1:-1;26517:10:128;26537:9;26548;26559:10;26517:19;:53::i;:::-;26275:300;26171:404;;;:::o;24616:410::-;24710:7;24725:14;24742:15;:13;:15::i;:::-;24725:32;;24763:14;24780:3;-1:-1:-1;;;;;24780:20:128;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;:47;;;;-1:-1:-1;24834:57:128;-1:-1:-1;;;;;24834:5:128;:22;24857:10;24877:4;24780:47;24834:22;:57::i;:::-;24897:35;;-1:-1:-1;;;24897:35:128;;-1:-1:-1;;;;;24897:5:128;:13;;;;:35;;24919:3;;24925:6;;24897:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24939:34:128;;-1:-1:-1;;;24939:34:128;;-1:-1:-1;;;;;24939:11:128;;;;;:34;;24959:4;;24966:6;;24939:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24987:34:128;;-1:-1:-1;;;24987:34:128;;-1:-1:-1;;;;;24987:19:128;;;-1:-1:-1;24987:19:128;;-1:-1:-1;24987:34:128;;25007:8;;25017:3;;24987:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24980:41;;;;24616:410;;;;;:::o;27583:316::-;27693:12;27708:28;27724:11;27708:15;:28::i;:::-;27693:43;;27764:21;27782:2;27764:17;:21::i;:::-;27750:10;;-1:-1:-1;;;;;27750:35:128;;;27742:85;;;;-1:-1:-1;;;27742:85:128;;;;;;;;:::i;:::-;-1:-1:-1;27833:61:128;-1:-1:-1;;;;;;;;;;;27863:11:128;27876:7;27885:8;27833:5;:61::i;27903:138::-;-1:-1:-1;;;;;28009:20:128;27990:4;28009:20;;;:9;:20;;;;;:27;;;;;;27903:138::o;14182:356::-;1531:13:35;:11;:13::i;:::-;14270:7:128;-1:-1:-1;;;;;14270:21:128;::::1;14262:73;;;;-1:-1:-1::0;;;14262:73:128::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14350:18:128;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;::::0;14360:7;;14350:25:::1;;14349:26;14341:81;;;;-1:-1:-1::0;;;14341:81:128::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14428:18:128;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;:32:::0;;-1:-1:-1;;14428:32:128::1;14456:4;14428:32;::::0;;14466:67:::1;14479:26;:15;:24;:26::i;:::-;14466:7;::::0;-1:-1:-1;;;;;14507:25:128;::::1;14466:12;:67::i;:::-;;;14182:356:::0;:::o;16518:2533::-;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:128;;;;;;;;:::i;:::-;-1:-1:-1;16773:28:128::1;16825:10;16804:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;16804:31:128::1;;16773:62;;16930:21;16926:115;;;17022:10;16969:23:::0;16961:73:::1;;;;-1:-1:-1::0;;;16961:73:128::1;;;;;;;;:::i;:::-;;16926:115;17118:35;17131:10;17143:9;17118:12;:35::i;:::-;17117:36;17185:10;17197:9;17109:99;;;;;;-1:-1:-1::0;;;17109:99:128::1;;;;;;;;;:::i;:::-;;;17319:23;17315:191;;;17370:47;-1:-1:-1::0;;;;;;;;;;;17407:9:128;17370:12:::1;:47::i;:::-;-1:-1:-1::0;;;;;;;;;;;9706:27:128;17481:9;;17369:48:::1;17352:147;;;;-1:-1:-1::0;;;17352:147:128::1;;;;;;;;;:::i;:::-;;;17315:191;17891:25;17919:21;:59;;17968:10;17919:59;;;-1:-1:-1::0;;;;;;;;;;;17919:59:128::1;-1:-1:-1::0;;;;;18073:28:128;::::1;;::::0;;;:9:::1;:28;::::0;;;;17891:87;;-1:-1:-1;18073:53:128::1;::::0;18116:9;18073:42:::1;:53::i;:::-;18158:17;18177:9;18058:135;;;;;;-1:-1:-1::0;;;18058:135:128::1;;;;;;;;;:::i;:::-;;;18200:86;18224:9;18235:14;18251;18267:18;18200:23;:86::i;:::-;18531:68;::::0;;;;::::1;::::0;;;;;-1:-1:-1;;;;;18531:68:128;;::::1;;::::0;;::::1;::::0;;;18509:19;;::::1;-1:-1:-1::0;18509:19:128;;;:8:::1;:19:::0;;;;;;:90;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;18509:90:128::1;::::0;;;::::1;;::::0;;18606:68:::1;:10;18626:17:::0;18509:19;18626:17;18606:19:::1;:68::i;:::-;18680:78;:10;18707:17:::0;18726:9;18737:20:::1;18680:26;:78::i;:::-;18765:71;-1:-1:-1::0;;;;;18765:5:128::1;:22;18788:10;18808:4;18815:20;18765:22;:71::i;:::-;18843:14;18860:15;:13;:15::i;:::-;18881:49;::::0;-1:-1:-1;;;18881:49:128;;18843:32;;-1:-1:-1;;;;;;18881:5:128::1;:13;::::0;::::1;::::0;:49:::1;::::0;18843:32;;18909:20:::1;::::0;18881:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18936:48:128::1;::::0;-1:-1:-1;;;18936:48:128;;-1:-1:-1;;;;;18936:11:128;::::1;::::0;::::1;::::0;:48:::1;::::0;18956:4:::1;::::0;18963:20:::1;::::0;18936:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19023:9;-1:-1:-1::0;;;;;18996:50:128::1;19004:17;-1:-1:-1::0;;;;;18996:50:128::1;;19034:11;18996:50;;;;;;:::i;:::-;;;;;;;;16767:2284;;;16518:2533:::0;;;;;;:::o;26987:155::-;27088:49;27094:10;27106:11;27119:7;27128:8;27088:5;:49::i;28979:197::-;29068:7;29098:72;:60;29118:39;29135:10;29118:37;:39::i;:::-;29098:7;;:19;:60::i;:::-;-1:-1:-1;;;;;29098:70:128;;:72::i;2293:101:35:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;12985:204:128:-;1531:13:35;:11;:13::i;:::-;13092:10:128::1;::::0;-1:-1:-1;;;;;13092:10:128::1;13084:33:::0;13076:78:::1;;;;-1:-1:-1::0;;;13076:78:128::1;;;;;;;;;;;;13160:10;:24:::0;;-1:-1:-1;;;;;;13160:24:128::1;-1:-1:-1::0;;;;;13160:24:128;;;::::1;::::0;;;::::1;::::0;;12985:204::o;28618:131::-;28685:7;28715:28;:16;:7;:14;:16::i;:28::-;28700:44;;28618:131;:::o;28325:174::-;-1:-1:-1;;;;;28444:20:128;;28425:4;28444:20;;;:9;:20;;;;;:50;;28484:9;28444:39;:50::i;:::-;28437:57;28325:174;-1:-1:-1;;;28325:174:128:o;2543:215:35:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:35;::::1;2623:91;;2700:1;2672:31;;-1:-1:-1::0;;;2672:31:35::1;;;;;;;;:::i;2623:91::-;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;20097:2942:128:-;20215:7;20224:4;20230:7;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:128;;;;;;;;:::i;:::-;-1:-1:-1;20424:10:128::1;20394:27;20492:21:::0;;;:9:::1;:21;::::0;;;;;20540:46:::1;20492:21:::0;20576:9;20540:35:::1;:46::i;:::-;20519:67;;20735:13;20734:14;:49;;;;-1:-1:-1::0;20773:10:128::1;20752:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;20752:31:128::1;;20734:49;:124;;;;-1:-1:-1::0;20795:33:128;::::1;::::0;:9:::1;:33;::::0;:63:::1;:33:::0;20848:9;20795:52:::1;:63::i;:::-;20723:289;;;-1:-1:-1::0;;20944:33:128;9698:36:::1;20944:33:::0;-1:-1:-1;20944:9:128::1;:33;::::0;-1:-1:-1;;;;;;;;;;;20944:33:128;21001:4:::1;20723:289;21067:9:::0;21026:13;21018:60:::1;;;;-1:-1:-1::0;;;21018:60:128::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21085:15:128::1;21103:55;:10;21127:19:::0;21148:9;21103:23:::1;:55::i;:::-;21085:73:::0;-1:-1:-1;21085:73:128;21183:7;21172:18;;::::1;;21164:78;;;::::0;-1:-1:-1;;;21164:78:128;;::::1;::::0;::::1;13081:25:182::0;;;;13122:18;;;13115:34;13054:18;;21164:78:128::1;12907:248:182::0;21164:78:128::1;-1:-1:-1::0;21341:7:128;;-1:-1:-1;21315:23:128::1;21521:18;21501:17;21341:7:::0;21501;:17:::1;:::i;:::-;:38;21484:55;;21833:9;21829:484;;;21860:44;:16:::0;21894:9;21860:33:::1;:44::i;:::-;21933:9;21852:92;;;;;-1:-1:-1::0;;;21852:92:128::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21970:7:128;;-1:-1:-1;22050:53:128::1;:10;22072:19:::0;22093:9;22050:21:::1;:53::i;:::-;22557:75;:10;22584:19:::0;22605:9;22616:15;22557:26:::1;:75::i;:::-;22894:20;22917:15;:13;:15::i;:::-;-1:-1:-1::0;;;;;22917:32:128::1;;22950:10;22962:15;22917:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22993:15:::0;;23010:9;;-1:-1:-1;22993:15:128;;-1:-1:-1;20097:2942:128;-1:-1:-1;;;;;;;;20097:2942:128:o;1796:162:35:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;735:10:48;1855:23:35;1851:101;;735:10:48;1901:40:35;;-1:-1:-1;;;1901:40:35;;;;;;;;:::i;5188:515:145:-;-1:-1:-1;;;;;8067:24:145;;;5345:19;8067:24;;;;;;;;;;;:45;;;;;;;;;;:55;;;;;;5418:25;;;;5414:52;;5453:7;;;5414:52;-1:-1:-1;;;;;5471:24:145;;;:13;:24;;;;;;;;;;;:45;;;;;;;;;;;;:55;;:68;;-1:-1:-1;;;;;;5471:68:145;;;;;;;;;;;5550:51;;;;;5577:11;;5471:68;;5550:51;:::i;:::-;;;;;;;;5608:90;5624:5;5631:11;5644:10;5656:41;5669:5;5676:9;5687;5656:12;:41::i;:::-;5608:15;:90::i;:::-;5339:364;5188:515;;;;:::o;1618:188:46:-;1745:53;;;-1:-1:-1;;;;;13645:32:182;;;1745:53:46;;;13627:51:182;13714:32;;13694:18;;;13687:60;13763:18;;;;13756:34;;;1745:53:46;;;;;;;;;;13600:18:182;;;;1745:53:46;;;;;;;;-1:-1:-1;;;;;1745:53:46;-1:-1:-1;;;1745:53:46;;;1718:81;;1738:5;;1718:19;:81::i;31511:277:128:-;31580:9;31656:24;31683:15;:13;:15::i;:::-;-1:-1:-1;;;;;31683:27:128;;31711:11;31683:40;;;;;;;;;;;;;1989:25:182;;1977:2;1962:18;;1843:177;31683:40:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31736:17;;;;31756:15;;:27;31656:67;;-1:-1:-1;31736:47:128;;;:::i;29690:357::-;29789:12;29804:28;29820:11;29804:15;:28::i;:::-;29789:43;-1:-1:-1;29903:53:128;:10;29923:6;29931:11;29789:43;29948:7;29903:19;:53::i;:::-;29990:15;:13;:15::i;:::-;:52;;-1:-1:-1;;;29990:52:128;;;;;16215:25:182;;;16256:18;;;16249:34;;;16326:14;;16319:22;16299:18;;;16292:50;-1:-1:-1;;;;;29990:20:128;;;;;;;16188:18:182;;29990:52:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29783:264;29690:357;;;;:::o;15296:213:62:-;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;16534:36:182;16586:18;;;16579:34;;;16507:18;;15421:41:62;16353:266:182;15370:103:62;-1:-1:-1;15496:5:62;15296:213::o;1277:210:65:-;1389:16;;1442:38;1450:4;1469:3;1474:5;1442:7;:38::i;:::-;1435:45;;;;1277:210;;;;;;;:::o;2127:620:142:-;2213:4;-1:-1:-1;;;;;2233:22:142;;2225:75;;;;-1:-1:-1;;;2225:75:142;;;;;;;;;;;;-1:-1:-1;;;;;2350:37:142;;;;;;:27;;;:37;;;;;:44;;;2346:77;;;-1:-1:-1;2411:5:142;2404:12;;2346:77;2429:13;2445:19;:5;:17;:19::i;:::-;2510:35;;;;;;;;2525:4;2510:35;;-1:-1:-1;;;;;2510:35:142;;;;;;;;;;-1:-1:-1;;;;;2470:37:142;;-1:-1:-1;2470:37:142;;;:27;;;:37;;;;;;:75;;;;;;-1:-1:-1;;;;;;2470:75:142;;;;;;-1:-1:-1;;;;;;2470:75:142;;;;;;;;;;;2510:35;;-1:-1:-1;2565:26:142;:15;:24;:26::i;:::-;2552:39;;2598:75;2638:3;2643:29;2651:8;-1:-1:-1;;;;;2643:27:142;;:29::i;:::-;-1:-1:-1;;;;;2598:34:142;;;;;;:27;;;:34;;;;;;:75;:39;:75::i;:::-;-1:-1:-1;2679:45:142;;-1:-1:-1;2695:3:142;2700:23;2701:9;:5;2709:1;2701:9;:::i;:::-;-1:-1:-1;;;;;2700:21:142;;:23::i;:::-;2679:5;;:45;:15;:45::i;:::-;-1:-1:-1;2738:4:142;;2127:620;-1:-1:-1;;;;;;2127:620:142:o;30051:1456:128:-;-1:-1:-1;;;;;30342:19:128;;30299:40;30342:19;;;:8;:19;;;;;;;;;30299:72;;;;;;;;;;;;;;;;;;;;;;;;;30393:32;:68;;;;-1:-1:-1;30429:27:128;;;;:32;30393:68;30505:27;;30534;;;;30505;;30377:191;;;;-1:-1:-1;;;30377:191:128;;;;;13081:25:182;;;;13122:18;;;13115:34;13054:18;;30377:191:128;12907:248:182;30377:191:128;;;30913:27;30970:14;:16;;;30988:14;:16;;;30953:52;;;;;;;;16981:19:182;;;17025:2;17016:12;;17009:28;17062:2;17053:12;;16824:247;30953:52:128;;;;-1:-1:-1;;30953:52:128;;;;;;;;;30943:63;;30953:52;30943:63;;;;31022:29;;;;:8;:29;;;;;;30943:63;;-1:-1:-1;30943:63:128;;31022:29;;31021:30;31012:104;;;;-1:-1:-1;;;31012:104:128;;;;;;1989:25:182;;1977:2;1962:18;;1843:177;31012:104:128;-1:-1:-1;31122:29:128;;;;:8;:29;;;;;;;;;:36;;31154:4;-1:-1:-1;;31122:36:128;;;;;;31365:25;;31315:135;;-1:-1:-1;;;31315:135:128;;:17;-1:-1:-1;;;;;31315:35:128;;;;-1:-1:-1;;;31365:25:128;;;-1:-1:-1;;;;;31365:25:128;;31315:135;;31399:14;;31415;;31431:18;;31315:135;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31300:202;;;;-1:-1:-1;;;31300:202:128;;;;;;;;;;;2152:479:145;2313:39;;2339:7;2313:39;-1:-1:-1;;;;;2391:24:145;;;2358:30;2391:24;;;;;;;;;;;2422:29;;;;;;;;;;;:48;;2463:7;;2358:30;2422:48;;2463:7;;2422:48;:::i;:::-;;;;-1:-1:-1;;;;;;;2511:29:145;;;2507:1;2511:29;;;;;;;;;;:39;;;2476:84;;2492:5;;2507:1;2511:39;2552:7;2476:15;:84::i;:::-;2567:28;:15;;;2587:7;2567:19;:28::i;:::-;-1:-1:-1;2601:25:145;;-1:-1:-1;2601:12:145;;;2618:7;2601:16;:25::i;:::-;;;2307:324;2152:479;;;;:::o;2114:297:65:-;2226:24;;2193:7;;;2274:50;2226:4;2312:3;2193:7;2226:24;2274:18;:50::i;:::-;2260:64;-1:-1:-1;2341:8:65;;:63;;2356:41;2370:4;2389:7;2395:1;2389:3;:7;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;;7642:28;;7421:265;2356:41;:48;-1:-1:-1;;;2356:48:65;;-1:-1:-1;;;;;2356:48:65;2341:63;;;-1:-1:-1;2352:1:65;;2114:297;-1:-1:-1;;;;2114:297:65:o;7228:218:62:-;7285:7;-1:-1:-1;;;;;7308:25:62;;7304:105;;;7356:42;;-1:-1:-1;;;7356:42:62;;7387:3;7356:42;;;16534:36:182;16586:18;;;16579:34;;;16507:18;;7356:42:62;16353:266:182;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;3442:206:65:-;3537:24;;3504:7;;3578:8;;:63;;3593:41;3607:4;3626:7;3632:1;3626:3;:7;:::i;3593:41::-;:48;-1:-1:-1;;;3593:48:65;;-1:-1:-1;;;;;3593:48:65;3578:63;;;3589:1;3571:70;3442:206;-1:-1:-1;;;3442:206:65:o;9666:164:142:-;-1:-1:-1;;;;;9781:37:142;9762:4;9781:37;;;:27;;;;;:37;;;;;:44;;;;9666:164::o;6587:223:145:-;-1:-1:-1;;;;;6752:24:145;;;6728:7;6752:24;;;;;;;;;;;:45;;;;;;;;;;:53;;6587:223::o;3008:266:142:-;-1:-1:-1;;;;;3130:37:142;;3097:4;3130:37;;;:27;;;:37;;;;;;;;3109:58;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3109:58:142;;;;;;;;;3173:46;;3207:5;3200:12;;;;;3173:46;3232:37;3240:5;3247;:11;;;3260:8;3232:7;:37::i;:::-;3225:44;3008:266;-1:-1:-1;;;;3008:266:142:o;6096:173:145:-;6215:49;6224:5;6231:9;6242;6261:1;6215:8;:49::i;3045:479::-;3206:39;;3232:7;3206:39;-1:-1:-1;;;;;3284:24:145;;;3251:30;3284:24;;;;;;;;;;;3315:29;;;;;;;;;;;:48;;3356:7;;3251:30;3315:48;;3356:7;;3315:48;:::i;:::-;;;;-1:-1:-1;;;;;;;3392:29:145;;;:18;:29;;;;;;;;;;:39;;;3369:84;;3385:5;;3392:39;;;3445:7;3369:15;:84::i;:::-;3460:28;:15;;;3480:7;3460:19;:28::i;:::-;-1:-1:-1;3494:25:145;;-1:-1:-1;3494:12:145;;;3511:7;3494:16;:25::i;10389:583::-;10538:3;-1:-1:-1;;;;;10529:12:145;:5;-1:-1:-1;;;;;10529:12:145;;:28;;;-1:-1:-1;10545:12:145;;10529:28;10567:7;10525:55;-1:-1:-1;;;;;10590:19:145;;;10586:191;;-1:-1:-1;;;;;10658:27:145;;10620:16;10658:27;;;:20;;;;:27;;;;;10620:16;;10658:52;;:39;10702:7;10658:43;:52::i;:::-;10619:91;;;;10744:5;-1:-1:-1;;;;;10723:47:145;;10751:8;10761;10723:47;;;;;;13081:25:182;;;13137:2;13122:18;;13115:34;13069:2;13054:18;;12907:248;10723:47:145;;;;;;;;10611:166;;10586:191;-1:-1:-1;;;;;10787:17:145;;;10783:185;;-1:-1:-1;;;;;10853:25:145;;10815:16;10853:25;;;:20;;;;:25;;;;;10815:16;;10853:50;;:37;10895:7;10853:41;:50::i;:::-;10814:89;;;;10937:3;-1:-1:-1;;;;;10916:45:145;;10942:8;10952;10916:45;;;;;;13081:25:182;;;13137:2;13122:18;;13115:34;13069:2;13054:18;;12907:248;10916:45:145;;;;;;;;10806:162;;10389:583;;;;:::o;7686:720:46:-;7766:18;7794:19;7932:4;7929:1;7922:4;7916:11;7909:4;7903;7899:15;7896:1;7889:5;7882;7877:60;7989:7;7979:176;;8033:4;8027:11;8078:16;8075:1;8070:3;8055:40;8124:16;8119:3;8112:29;7979:176;-1:-1:-1;;8232:1:46;8226:8;8182:16;;-1:-1:-1;8258:15:46;;:68;;8310:11;8325:1;8310:16;;8258:68;;;-1:-1:-1;;;;;8276:26:46;;;:31;8258:68;8254:146;;;8382:5;8349:40;;-1:-1:-1;;;8349:40:46;;;;;;;;:::i;171:148:180:-;235:9;272:43;312:2;289;272:43;:::i;4261:534:145:-;4444:15;4462:47;4479:5;4486:10;4498;4462:16;:47::i;:::-;-1:-1:-1;;;;;9763:32:145;;4515:17;9763:32;;;:20;;;:32;;;;;;;;:55;;;;;;;;;4444:65;;-1:-1:-1;4612:19:145;4624:7;9763:55;4612:19;:::i;:::-;4601:30;;;4670:10;4601:7;4691:19;4703:7;4691:9;:19;:::i;:::-;4586:131;;;;;;;-1:-1:-1;;;4586:131:145;;-1:-1:-1;;;;;18747:32:182;;;4586:131:145;;;18729:51:182;18796:18;;;18789:34;;;;18839:18;;;18832:34;18702:18;;4586:131:145;18527:345:182;4586:131:145;-1:-1:-1;;;;;;;;4724:32:145;;;;;;:20;;;:32;;;;;;;;:55;;;;;;;;:66;;4783:7;;4724:32;:66;;4783:7;;4724:66;:::i;:::-;;;;-1:-1:-1;;;;;;;;;4261:534:145:o;4789:922:65:-;4970:11;;4910:16;;;;4996:7;;4992:713;;5019:26;5048:28;5062:4;5068:7;5074:1;5068:3;:7;:::i;5048:28::-;5107:9;;;;-1:-1:-1;5107:9:65;;;;;-1:-1:-1;;;5150:11:65;;-1:-1:-1;;;;;5150:11:65;;5235:13;;;;5231:89;;;5275:30;;-1:-1:-1;;;5275:30:65;;;;;;;;;;;5231:89;5394:3;5383:14;;:7;:14;;;5379:163;;5417:19;;;;-1:-1:-1;;;;;;;;5417:19:65;;;;;;5379:163;;;5485:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:41:65;;;;;;;;;;5475:52;;;;;;;-1:-1:-1;5475:52:65;;;;;;;;;;;;;;-1:-1:-1;;;5475:52:65;;;;;;;;;;5379:163;5563:9;-1:-1:-1;5574:5:65;;-1:-1:-1;5555:25:65;;-1:-1:-1;;;5555:25:65;4992:713;-1:-1:-1;;5621:41:65;;;;;;;;;;;;;;;-1:-1:-1;;;;;5621:41:65;;;;;;;;;;5611:52;;;;;;;-1:-1:-1;5611:52:65;;;;;;;;;;;;;-1:-1:-1;;;5611:52:65;;;;;;;;;;;;-1:-1:-1;;5655:5:65;5677:17;;3156:218:62;3213:7;-1:-1:-1;;;;;3236:25:62;;3232:105;;;3284:42;;-1:-1:-1;;;3284:42:62;;3315:3;3284:42;;;16534:36:182;16586:18;;;16579:34;;;16507:18;;3284:42:62;16353:266:182;957:352:143;1041:7;1050;1065:15;1083:14;:5;:12;:14::i;:::-;1065:32;;1107:7;1118:1;1107:12;1103:58;;-1:-1:-1;;;;;1129:25:143;;-1:-1:-1;1129:25:143;;-1:-1:-1;1129:25:143;;1103:58;1166:14;1183:19;:7;:17;:19::i;:::-;1166:36;;1208:56;1219:26;:15;:24;:26::i;:::-;1247:16;1257:6;1247:7;:16;:::i;:::-;1208:5;;:56;:10;:56::i;:::-;-1:-1:-1;1278:7:143;;-1:-1:-1;1287:16:143;1297:6;1278:7;1287:16;:::i;:::-;-1:-1:-1;;;;;1270:34:143;;;;-1:-1:-1;1270:34:143;;-1:-1:-1;;;957:352:143;;;;;;:::o;6061:433:65:-;6218:7;6237:230;6250:4;6244:3;:10;6237:230;;;6270:11;6284:23;6297:3;6302:4;6284:12;:23::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;6270:37;;-1:-1:-1;6325:35:65;;;;7642:28;;6325:29;;;:35;6321:136;;;6387:3;6380:10;;6321:136;;;6435:7;:3;6441:1;6435:7;:::i;:::-;6429:13;;6321:136;6256:211;6237:230;;;-1:-1:-1;6483:4:65;6061:433;-1:-1:-1;;;6061:433:65:o;4039:1503:142:-;4145:4;;4179:19;:5;:17;:19::i;:::-;4157:41;;4218:11;-1:-1:-1;;;;;4208:21:142;:6;-1:-1:-1;;;;;4208:21:142;;4204:106;;4246:57;;-1:-1:-1;;;4246:57:142;;-1:-1:-1;;;;;19341:32:182;;;4246:57:142;;;19323:51:182;19410:32;;19390:18;;;19383:60;19296:18;;4246:57:142;19149:300:182;4204:106:142;4406:32;;;;;;;;-1:-1:-1;4406:32:142;;;;;;;;;;-1:-1:-1;;;;;4366:37:142;;;;:27;;;:37;;;;;;:72;;;;;;-1:-1:-1;;;;;;4366:72:142;;;;;;-1:-1:-1;;;;;;4366:72:142;;;-1:-1:-1;;;;;4366:72:142;;;;;;;;;;;;;4773:15;-1:-1:-1;4773:11:142;:15;:::i;:::-;4753:35;;4794:10;4807:26;:15;:24;:26::i;:::-;4794:39;;4955:6;-1:-1:-1;;;;;4942:19:142;:9;-1:-1:-1;;;;;4942:19:142;;4938:323;;-1:-1:-1;;;;;5003:38:142;;4971:21;5003:38;;;:27;;;:38;;;;;:59;;:47;;:45;:47::i;:59::-;4971:92;;5117:48;;;;;;;;5132:4;5117:48;;;;;;5145:18;:6;-1:-1:-1;;;;;5145:16:142;;:18::i;:::-;-1:-1:-1;;;;;5117:48:142;;;;;;-1:-1:-1;;;;;5072:42:142;;;;;;:27;;;:42;;;;;;;;:93;;;;;;;;;;;;;;-1:-1:-1;;;;;;5072:93:142;;;;;;;-1:-1:-1;;;;;;5072:93:142;;;;;;;;;;;;;5173:81;;5214:3;;5219:34;;:32;:34::i;:::-;-1:-1:-1;;;;;5173:35:142;;;;;;:27;;;:35;;;;;;:81;:40;:81::i;:::-;;;4963:298;4938:323;-1:-1:-1;;;;;5337:38:142;;5394:1;5337:38;;;:27;;;:38;;;;;:60;;5381:3;;5337:43;:60::i;:::-;;;5475:45;5491:3;5496:23;5497:9;-1:-1:-1;;;;;5496:21:142;;:23::i;:::-;5475:5;;:45;:15;:45::i;:::-;-1:-1:-1;5533:4:142;;4039:1503;-1:-1:-1;;;;;;;;4039:1503:142:o;1532:472:143:-;1616:7;1625;1640:15;1658:14;:5;:12;:14::i;:::-;1640:32;;1682:7;1693:1;1682:12;1678:58;;-1:-1:-1;;;;;1704:25:143;;-1:-1:-1;1704:25:143;;-1:-1:-1;1704:25:143;;1678:58;1741:14;1758:19;:7;:17;:19::i;:::-;1741:36;-1:-1:-1;1868:10:143;1791:7;1741:36;-1:-1:-1;;;;;1791:17:143;;;;;;;;1783:114;;;;-1:-1:-1;;;1783:114:143;;-1:-1:-1;;;;;19877:32:182;;;1783:114:143;;;19859:51:182;-1:-1:-1;;;;;19946:32:182;;;19926:18;;;19919:60;20015:32;19995:18;;;19988:60;19832:18;;1783:114:143;19657:397:182;1783:114:143;;;;1903:56;1914:26;:15;:24;:26::i;:::-;1942:16;1952:6;1942:7;:16;:::i;1903:56::-;-1:-1:-1;1973:7:143;;-1:-1:-1;1982:16:143;1992:6;1973:7;1982:16;:::i;8980:242:145:-;-1:-1:-1;;;;;9153:32:145;;9129:7;9153:32;;;:20;;;;:32;;;;;:64;;:44;9206:10;9153:52;:64::i;3595:153:61:-;3657:7;3730:11;3740:1;3731:5;;;3730:11;:::i;:::-;3720:21;;3721:5;;;3720:21;:::i;2731:286:143:-;2824:7;2847:39;:5;2870:15;-1:-1:-1;551:43:180;471:126;2847:39:143;2839:101;;;;-1:-1:-1;;;2839:101:143;;;;;;;;;;;;2953:59;2977:34;2994:5;2977:32;:34::i;:::-;2953:5;;:23;:59::i;:::-;-1:-1:-1;;;;;2946:66:143;;2731:286;-1:-1:-1;;;2731:286:143:o;2716:606:65:-;2834:24;;2801:7;;;2834:24;2933:1;2927:7;;2923:234;;;2950:11;2970:14;2980:3;2970:9;:14::i;:::-;2964:20;;:3;:20;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;2950:34;;-1:-1:-1;7642:28:65;;3008:42;;;;;3002:48;;;;2998:149;;;3077:3;3070:10;;2998:149;;;3125:7;:3;3131:1;3125:7;:::i;:::-;3119:13;;2998:149;2936:221;2923:234;3167:11;3181:53;3200:4;3219:3;3224;3229:4;3181:18;:53::i;:::-;3167:67;-1:-1:-1;3252:8:65;;:63;;3267:41;3281:4;3300:7;3306:1;3300:3;:7;:::i;3267:41::-;:48;-1:-1:-1;;;3267:48:65;;-1:-1:-1;;;;;3267:48:65;3252:63;;;3263:1;3252:63;3245:70;2716:606;-1:-1:-1;;;;;;;2716:606:65:o;18080:5181:61:-;18128:7;18246:1;18241;:6;18237:53;;-1:-1:-1;18274:1:61;18080:5181::o;18237:53::-;19230:1;19258;-1:-1:-1;;;19278:16:61;;19274:92;;19321:3;19314:10;;;;;19349:2;19342:9;19274:92;-1:-1:-1;;;19383:2:61;:15;19379:90;;19425:2;19418:9;;;;;19452:2;19445:9;19379:90;-1:-1:-1;;;19486:2:61;:15;19482:90;;19528:2;19521:9;;;;;19555:2;19548:9;19482:90;19596:7;19589:2;:15;19585:89;;19631:2;19624:9;;;;;19658:1;19651:8;19585:89;19698:6;19691:2;:14;19687:87;;19732:1;19725:8;;;;;19758:1;19751:8;19687:87;19798:6;19791:2;:14;19787:87;;19832:1;19825:8;;;;;19858:1;19851:8;19787:87;19898:6;19891:2;:14;19887:61;;19932:1;19925:8;19887:61;20374:1;:6;20385:1;20373:13;;;;;22284:1;20373:13;22284:6;;;;:::i;:::-;;22279:2;:11;22278:18;;22273:23;;22404:1;22397:2;22393:1;:6;;;;;:::i;:::-;;22388:2;:11;22387:18;;22382:23;;22515:1;22508:2;22504:1;:6;;;;;:::i;:::-;;22499:2;:11;22498:18;;22493:23;;22624:1;22617:2;22613:1;:6;;;;;:::i;:::-;;22608:2;:11;22607:18;;22602:23;;22734:1;22727:2;22723:1;:6;;;;;:::i;:::-;;22718:2;:11;22717:18;;22712:23;;22844:1;22837:2;22833:1;:6;;;;;:::i;:::-;;22828:2;:11;22827:18;;22822:23;;23216:28;23241:2;23237:1;:6;;;;;:::i;:::-;;23232:11;;;34795:145:62;23216:28:61;23211:33;;;18080:5181;-1:-1:-1;;;18080:5181:61:o;14:226:182:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:182;;14:226;-1:-1:-1;14:226:182:o;245:284::-;303:6;356:2;344:9;335:7;331:23;327:32;324:52;;;372:1;369;362:12;324:52;411:9;398:23;-1:-1:-1;;;;;454:5:182;450:30;443:5;440:41;430:69;;495:1;492;485:12;534:223;-1:-1:-1;;;;;718:32:182;;;;700:51;;688:2;673:18;;534:223::o;762:131::-;-1:-1:-1;;;;;837:31:182;;827:42;;817:70;;883:1;880;873:12;898:529;975:6;983;991;1044:2;1032:9;1023:7;1019:23;1015:32;1012:52;;;1060:1;1057;1050:12;1012:52;1099:9;1086:23;1118:31;1143:5;1118:31;:::i;:::-;1168:5;-1:-1:-1;1225:2:182;1210:18;;1197:32;1238:33;1197:32;1238:33;:::i;:::-;1290:7;-1:-1:-1;1349:2:182;1334:18;;1321:32;1362:33;1321:32;1362:33;:::i;:::-;1414:7;1404:17;;;898:529;;;;;:::o;1432:406::-;1518:6;1526;1579:2;1567:9;1558:7;1554:23;1550:32;1547:52;;;1595:1;1592;1585:12;1547:52;1634:9;1621:23;1653:31;1678:5;1653:31;:::i;:::-;1703:5;-1:-1:-1;1760:2:182;1745:18;;1732:32;1773:33;1732:32;1773:33;:::i;:::-;1825:7;1815:17;;;1432:406;;;;;:::o;2626:118::-;2712:5;2705:13;2698:21;2691:5;2688:32;2678:60;;2734:1;2731;2724:12;2749:128;2814:20;;2843:28;2814:20;2843:28;:::i;:::-;2749:128;;;:::o;2882:481::-;2956:6;2964;2972;3025:2;3013:9;3004:7;3000:23;2996:32;2993:52;;;3041:1;3038;3031:12;2993:52;3086:23;;;-1:-1:-1;3206:2:182;3191:18;;3178:32;;-1:-1:-1;3288:2:182;3273:18;;3260:32;3301:30;3260:32;3301:30;:::i;3368:247::-;3427:6;3480:2;3468:9;3459:7;3455:23;3451:32;3448:52;;;3496:1;3493;3486:12;3448:52;3535:9;3522:23;3554:31;3579:5;3554:31;:::i;3620:354::-;3692:4;3686:11;;;3724:17;;-1:-1:-1;;;;;3756:34:182;;3792:22;;;3753:62;3750:185;;;3857:10;3852:3;3848:20;3845:1;3838:31;3892:4;3889:1;3882:15;3920:4;3917:1;3910:15;3750:185;3951:4;3944:24;3620:354;:::o;3979:349::-;4051:2;4045:9;4093:3;4081:16;;-1:-1:-1;;;;;4112:34:182;;4148:22;;;4109:62;4106:185;;;4213:10;4208:3;4204:20;4201:1;4194:31;4248:4;4245:1;4238:15;4276:4;4273:1;4266:15;4333:352;4405:2;4399:9;4447:6;4435:19;;-1:-1:-1;;;;;4469:34:182;;4505:22;;;4466:62;4463:185;;;4570:10;4565:3;4561:20;4558:1;4551:31;4605:4;4602:1;4595:15;4633:4;4630:1;4623:15;4690:345;4757:2;4751:9;4799:4;4787:17;;-1:-1:-1;;;;;4819:34:182;;4855:22;;;4816:62;4813:185;;;4920:10;4915:3;4911:20;4908:1;4901:31;4955:4;4952:1;4945:15;4983:4;4980:1;4973:15;5040:350;5112:2;5106:9;5154:4;5142:17;;-1:-1:-1;;;;;5174:34:182;;5210:22;;;5171:62;5168:185;;;5275:10;5270:3;5266:20;5263:1;5256:31;5310:4;5307:1;5300:15;5338:4;5335:1;5328:15;5395:386;5449:5;5497:4;5485:9;5480:3;5476:19;5472:30;5469:50;;;5515:1;5512;5505:12;5469:50;5537:22;;:::i;:::-;5604:23;;5636:22;;5731:2;5716:18;;;5703:32;5751:14;;;5744:31;;;;-1:-1:-1;5528:31:182;5395:386;-1:-1:-1;5395:386:182:o;5786:1357::-;5968:6;5976;5984;5992;6000;6008;6052:9;6043:7;6039:23;6082:3;6078:2;6074:12;6071:32;;;6099:1;6096;6089:12;6071:32;6138:9;6125:23;6157:31;6182:5;6157:31;:::i;:::-;6207:5;-1:-1:-1;6264:2:182;6249:18;;6236:32;6277:33;6236:32;6277:33;:::i;:::-;6329:7;-1:-1:-1;6355:54:182;6401:7;6396:2;6381:18;;6355:54;:::i;:::-;6345:64;-1:-1:-1;6444:3:182;-1:-1:-1;;6425:17:182;;6421:27;6418:47;;;6461:1;6458;6451:12;6418:47;;6489:22;;:::i;:::-;6584:3;6569:19;;6556:33;6598:24;;6695:3;6680:19;;6667:33;6729:2;6716:16;;6709:33;6815:3;6800:19;;6787:33;6849:2;6836:16;;6829:33;6935:3;6920:19;;6907:33;6969:2;6956:16;;6949:33;6605:7;-1:-1:-1;7027:55:182;7074:7;7068:3;7053:19;;7027:55;:::i;:::-;7017:65;;7101:36;7132:3;7121:9;7117:19;7101:36;:::i;:::-;7091:46;;5786:1357;;;;;;;;:::o;8284:367::-;8352:6;8360;8413:2;8401:9;8392:7;8388:23;8384:32;8381:52;;;8429:1;8426;8419:12;8381:52;8468:9;8455:23;8487:31;8512:5;8487:31;:::i;:::-;8537:5;8615:2;8600:18;;;;8587:32;;-1:-1:-1;;;8284:367:182:o;9195:138::-;9274:13;;9296:31;9274:13;9296:31;:::i;9338:745::-;9437:6;9497:3;9485:9;9476:7;9472:23;9468:33;9513:2;9510:22;;;9528:1;9525;9518:12;9510:22;-1:-1:-1;9570:22:182;;:::i;:::-;9637:16;;9662:22;;9750:2;9735:18;;;9729:25;9770:14;;;9763:31;9839:2;9824:18;;9818:25;9852:33;9818:25;9852:33;:::i;:::-;9912:2;9901:14;;9894:31;9970:2;9955:18;;9949:25;9983:30;9949:25;9983:30;:::i;:::-;10040:2;10029:14;;10022:31;10033:5;9338:745;-1:-1:-1;;;9338:745:182:o;10088:300::-;-1:-1:-1;;;;;10280:32:182;;;10262:51;;10349:32;;10344:2;10329:18;;10322:60;10250:2;10235:18;;10088:300::o;10393:1422::-;10495:6;10539:9;10530:7;10526:23;10576:3;10572:2;10568:12;10592:2;10589:22;;;10607:1;10604;10597:12;10589:22;-1:-1:-1;10649:22:182;;:::i;:::-;10691:4;10687:2;10683:13;10680:33;;;10709:1;10706;10699:12;10680:33;10737:22;;:::i;:::-;10804:16;;10829:24;;10919:2;10904:18;;;10898:25;10939:16;;;10932:33;10974:22;;;11062:4;11047:20;;;11041:27;11084:14;;;11077:31;;;;11174:2;11159:18;;;11153:25;11194:16;;;11187:33;;;;11286:3;11271:19;;;11265:26;11307:14;;;11300:31;;;;11397:3;11382:19;;;11376:26;11418:15;;;11411:32;;;;11509:3;11494:19;;;11488:26;11530:15;;;11523:32;;;;11621:3;11606:19;;;11600:26;11642:15;;;11635:32;;;;11735:6;11720:22;;;11714:29;11759:15;;;11752:33;;;;-1:-1:-1;10981:5:182;;10393:1422;-1:-1:-1;;10393:1422:182:o;11820:274::-;-1:-1:-1;;;;;12012:32:182;;;;11994:51;;12076:2;12061:18;;12054:34;11982:2;11967:18;;11820:274::o;12099:245::-;12166:6;12219:2;12207:9;12198:7;12194:23;12190:32;12187:52;;;12235:1;12232;12225:12;12187:52;12267:9;12261:16;12286:28;12308:5;12286:28;:::i;12672:230::-;12742:6;12795:2;12783:9;12774:7;12770:23;12766:32;12763:52;;;12811:1;12808;12801:12;12763:52;-1:-1:-1;12856:16:182;;12672:230;-1:-1:-1;12672:230:182:o;13160:127::-;13221:10;13216:3;13212:20;13209:1;13202:31;13252:4;13249:1;13242:15;13276:4;13273:1;13266:15;13292:128;13359:9;;;13380:11;;;13377:37;;;13394:18;;:::i;13801:158::-;13891:13;;13933:1;13923:12;;13913:40;;13949:1;13946;13939:12;13964:382;14028:5;14076:4;14064:9;14059:3;14055:19;14051:30;14048:50;;;14094:1;14091;14084:12;14048:50;14116:22;;:::i;:::-;14183:16;;14208:22;;14296:2;14281:18;;;14275:25;14316:14;;;14309:31;;;;-1:-1:-1;14107:31:182;13964:382;-1:-1:-1;13964:382:182:o;14351:1663::-;14448:6;14492:9;14483:7;14479:23;14529:3;14525:2;14521:12;14545:2;14542:22;;;14560:1;14557;14550:12;14542:22;-1:-1:-1;14602:17:182;;:::i;:::-;14639:4;14635:2;14631:13;14628:33;;;14657:1;14654;14647:12;14628:33;14685:22;;:::i;:::-;14752:16;;14777:24;;14867:2;14852:18;;;14846:25;14887:16;;;14880:33;14979:2;14964:18;;;14958:25;14999:16;;;14992:33;15091:2;15076:18;;;15070:25;15111:16;;;15104:33;15203:3;15188:19;;;15182:26;15224:17;;;15217:34;15317:3;15302:19;;;15296:26;15338:17;;;15331:34;15431:4;15416:20;;;15410:27;15453:18;;;15446:35;15490:22;;;14670:37;-1:-1:-1;15544:62:182;15600:4;15585:20;;15544:62;:::i;:::-;15539:2;15532:5;15528:14;15521:86;15639:50;15684:3;15673:9;15669:19;15639:50;:::i;:::-;15634:2;15627:5;15623:14;15616:74;15722:50;15767:3;15756:9;15752:19;15722:50;:::i;:::-;15717:2;15706:14;;15699:74;15839:3;15824:19;;15818:26;15871:3;15860:15;;15853:32;;;15818:26;-1:-1:-1;15918:65:182;15975:7;15969:3;15954:19;;15918:65;:::i;:::-;15912:3;15901:15;;15894:90;15905:5;14351:1663;-1:-1:-1;;;;14351:1663:182:o;16624:195::-;-1:-1:-1;;;;;16693:27:182;;;16722;;;16689:61;;16762:28;;16759:54;;;16793:18;;:::i;17411:709::-;17331:12;;17319:25;;17393:4;17382:16;;;17376:23;17360:14;;;17353:47;17763:3;17748:19;;17862:6;17856:13;17851:2;17840:9;17836:18;17829:41;17924:4;17916:6;17912:17;17906:24;17901:2;17890:9;17886:18;17879:52;17986:2;17978:6;17974:15;17968:22;17962:3;17951:9;17947:19;17940:51;18046:2;18038:6;18034:15;18028:22;18022:3;18011:9;18007:19;18000:51;18060:54;18109:3;18098:9;18094:19;18086:6;17331:12;;17319:25;;17393:4;17382:16;;;17376:23;17360:14;;17353:47;17258:148;18125:125;18190:9;;;18211:10;;;18208:36;;;18224:18;;:::i;19454:198::-;-1:-1:-1;;;;;19554:27:182;;;19525;;;19521:61;;19594:29;;19591:55;;;19626:18;;:::i;20059:127::-;20120:10;20115:3;20111:20;20108:1;20101:31;20151:4;20148:1;20141:15;20175:4;20172:1;20165:15;20191:217;20231:1;20257;20247:132;;20301:10;20296:3;20292:20;20289:1;20282:31;20336:4;20333:1;20326:15;20364:4;20361:1;20354:15;20247:132;-1:-1:-1;20393:9:182;;20191:217::o","linkReferences":{},"immutableReferences":{"93211":[{"start":5355,"length":32}],"93213":[{"start":744,"length":32},{"start":2656,"length":32},{"start":2741,"length":32},{"start":2859,"length":32},{"start":3002,"length":32}],"93215":[{"start":802,"length":32},{"start":3808,"length":32}],"93218":[{"start":470,"length":32},{"start":1500,"length":32},{"start":1563,"length":32},{"start":2705,"length":32},{"start":2812,"length":32}]}},"methodIdentifiers":{"ACTIVATION_THRESHOLD()":"b4ac4536","ASSET()":"4800d97f","BONUS_INSTANCE_ADDRESS()":"710ca354","EJECTION_THRESHOLD()":"dbc85752","addRollup(address)":"59264f00","delegate(address,address,address)":"2e341ce0","deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":"6902c67b","finalizeWithdraw(uint256)":"0928d152","getGovernance()":"289b3c0d","getLatestRollup()":"b35186a8","getLatestRollupAt(uint256)":"6a915516","isRegistered(address,address)":"d3da927f","isRollupRegistered(address)":"52f44a14","ownedPKs(bytes32)":"4bd96ece","owner()":"8da5cb5b","proofOfPossessionGasLimit()":"f852fef9","proposeWithLock(address,address)":"30eb4bdd","renounceOwnership()":"715018a6","setGovernance(address)":"ab033ea9","setProofOfPossessionGasLimit(uint64)":"0e9f7e43","transferOwnership(address)":"f2fde38b","vote(uint256,uint256,bool)":"6a18ff7a","voteWithBonus(uint256,uint256,bool)":"52097e4e","withdraw(address,uint256)":"f3fef3a3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__owner\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_activationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ejectionThreshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AddressSnapshotLib__CannotAddAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"name\":\"AddressSnapshotLib__IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"Delegation__InsufficientPower\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"existingPk1x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"existingPk1y\",\"type\":\"uint256\"}],\"name\":\"GSE__CannotChangePublicKeys\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__FailedToRemove\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__GovernanceAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InstanceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GSE__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__InvalidProofOfPossession\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InvalidRollupAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotLatestRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotWithdrawer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NothingToExit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"GSE__ProofOfPossessionAlreadySeen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__RollupAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__CheckpointedUintLib__InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CheckpointedUintLib__NotInPast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldDelegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDelegatee\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACTIVATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BONUS_INSTANCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EJECTION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"}],\"name\":\"addRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_publicKeyInG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"x1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y1\",\"type\":\"uint256\"}],\"internalType\":\"struct G2Point\",\"name\":\"_publicKeyInG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_proofOfPossession\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_moveWithLatestRollup\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGovernance\",\"outputs\":[{\"internalType\":\"contract Governance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getLatestRollupAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"}],\"name\":\"isRollupRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"ownedPKs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isRegistered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofOfPossessionGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_payload\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"proposeWithLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Governance\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_proofOfPossessionGasLimit\",\"type\":\"uint64\"}],\"name\":\"setProofOfPossessionGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"voteWithBonus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aztec Labs\",\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"addRollup(address)\":{\"details\":\"rollups only have access to the \\\"bonus instance\\\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.\",\"params\":{\"_rollup\":\"- The address of the rollup to add\"}},\"constructor\":{\"params\":{\"__owner\":\"- The owner of the GSE. Initially a deployer to allow adding an initial rollup, then handed over to governance.\",\"_activationThreshold\":\"- The amount of asset required to deposit an attester on the rollup.\",\"_asset\":\"- The ERC20 token asset used in governance and for sybil resistance. This token is deposited by attesters to gain voting power in governance (ratio of voting power to staked amount is 1:1).\",\"_ejectionThreshold\":\"- The minimum amount of asset required to be in the set to be considered an attester. If the balance falls below this threshold, the attester is ejected from the set.\"}},\"delegate(address,address,address)\":{\"details\":\"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \\\"active\\\" in order to use it. See `Governance.getProposalState` for more details.\",\"params\":{\"_attester\":\"- The address of the attester to delegate on behalf of\",\"_delegatee\":\"- The delegatee that should receive the power\",\"_instance\":\"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged.\"}},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"details\":\"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.\",\"params\":{\"_attester\":\"- The attester address on behalf of which the deposit is made.\",\"_moveWithLatestRollup\":\"- Whether to deposit into the specific instance, or the bonus instance\",\"_proofOfPossession\":\"- A proof of possessions for the private key corresponding _publicKey in G1 and G2\",\"_publicKeyInG1\":\"- BLS public key for the attester in G1\",\"_publicKeyInG2\":\"- BLS public key for the attester in G2\",\"_withdrawer\":\"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts.\"}},\"finalizeWithdraw(uint256)\":{\"details\":\"Will be a no operation if the withdrawal is already collected.\",\"params\":{\"_withdrawalId\":\"- The id of the withdrawal\"}},\"getLatestRollup()\":{\"returns\":{\"_0\":\"The address of the latest instance\"}},\"getLatestRollupAt(uint256)\":{\"params\":{\"_timestamp\":\"- The timestamp to lookup\"},\"returns\":{\"_0\":\"The address of the latest instance at the time of lookup\"}},\"isRegistered(address,address)\":{\"params\":{\"_attester\":\"- The attester to lookup\",\"_instance\":\"- The instance to look at\"},\"returns\":{\"_0\":\"True if the `_attester` is in the set of `_instance`, false otherwise\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proposeWithLock(address,address)\":{\"details\":\"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.\",\"params\":{\"_payload\":\"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\",\"_to\":\"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)\"},\"returns\":{\"_0\":\"The id of the proposal\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"vote(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\",\"_support\":\"- True if supporting the proposal, false otherwise.\"}},\"voteWithBonus(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\"}},\"withdraw(address,uint256)\":{\"details\":\"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \\\"what to do\\\" with the funds. And it must look at the returned amount withdrawn and the bool.\",\"params\":{\"_amount\":\"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.\",\"_attester\":\"- The attester to withdraw from.\"},\"returns\":{\"_0\":\"The actual amount withdrawn.\",\"_1\":\"True if attester is removed from set, false otherwise\",\"_2\":\"The id of the withdrawal at the governance\"}}},\"title\":\"GSECore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BONUS_INSTANCE_ADDRESS()\":{\"notice\":\"Create a special \\\"bonus\\\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \\\"instances\\\", and an \\\"instance\\\" is either the address of a \\\"true\\\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \\\"bonus\\\" address, which has its own accounting. NB: in every other context, \\\"instance\\\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \\\"rollup\\\" if we know we're talking about a rollup (often msg.sender), and \\\"instance\\\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \\\"bonus\\\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \\\"buckets\\\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \\\"effective\\\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \\\"affected instance\\\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc.\"},\"addRollup(address)\":{\"notice\":\"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set\"},\"delegate(address,address,address)\":{\"notice\":\"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions.\"},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"notice\":\"Deposits a new attester\"},\"finalizeWithdraw(uint256)\":{\"notice\":\"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc.\"},\"getLatestRollup()\":{\"notice\":\"Get the address of latest instance\"},\"getLatestRollupAt(uint256)\":{\"notice\":\"Get the address of the instance that was latest at time `_timestamp`\"},\"isRegistered(address,address)\":{\"notice\":\"Lookup if the `_attester` is in the `_instance` attester set\"},\"proposeWithLock(address,address)\":{\"notice\":\"Make a proposal to Governance via `Governance.proposeWithLock`\"},\"vote(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to `msg.sender`\"},\"voteWithBonus(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn.\"}},\"notice\":\"The core Governance Staking Escrow contract that handles the deposits of attesters on rollup instances. It is responsible for: - depositing/withdrawing attesters on rollup instances - providing rollup instances with historical views of their attesters - allowing depositors to delegate their voting power - allowing delegatees to vote at governance - maintaining a set of \\\"bonus\\\" attesters which are always deposited on behalf of the latest rollup NB: The \\\"bonus\\\" attesters are thus automatically \\\"moved along\\\" whenever the latest rollup changes. That is, at the point of the rollup getting added, the bonus is immediately available. This allows the latest rollup to start with a set of attesters, rather than requiring them to exit the old rollup and deposit in the new one. NB: The \\\"latest\\\" rollup in this contract does not technically need to be the \\\"canonical\\\" rollup according to the Registry, but in practice, it will be unless the new rollup does not use the GSE. Proposals which add rollups that DO want to use the GSE MUST call addRollup to both the Registry and the GSE. See RegisterNewRollupVersionPayload.sol for an example. NB: The \\\"owner\\\" of the GSE is intended to be the Governance contract, but there is a circular dependency in that we also want the GSE to be registered as the first beneficiary of the governance contract so that we don't need to go through a governance proposal to add it. To that end, this contract's view of `governance` needs to be set. So the current flow is to deploy the GSE with the owner set to the deployer, then deploy Governance, passing the GSE as the initial/sole authorized beneficiary, then have the deployer `setGovernance`, and then `transferOwnership` to Governance.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/governance/GSE.sol\":\"GSECore\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca\",\"dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167\",\"dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"src/governance/Bn254LibWrapper.sol\":{\"keccak256\":\"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c\",\"dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8\"]},\"src/governance/GSE.sol\":{\"keccak256\":\"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273\",\"dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU\"]},\"src/governance/Governance.sol\":{\"keccak256\":\"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf\",\"dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw\"]},\"src/governance/interfaces/IBn254LibWrapper.sol\":{\"keccak256\":\"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9\",\"dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej\"]},\"src/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff\",\"dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa\"]},\"src/governance/interfaces/IPayload.sol\":{\"keccak256\":\"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c\",\"dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin\"]},\"src/governance/libraries/AddressSnapshotLib.sol\":{\"keccak256\":\"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402\",\"dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp\"]},\"src/governance/libraries/CheckpointedUintLib.sol\":{\"keccak256\":\"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1\",\"dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q\"]},\"src/governance/libraries/ConfigurationLib.sol\":{\"keccak256\":\"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a\",\"dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy\"]},\"src/governance/libraries/DepositDelegationLib.sol\":{\"keccak256\":\"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb\",\"dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb\"]},\"src/governance/libraries/Errors.sol\":{\"keccak256\":\"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa\",\"dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv\"]},\"src/governance/libraries/ProposalLib.sol\":{\"keccak256\":\"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192\",\"dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT\"]},\"src/governance/libraries/compressed-data/Ballot.sol\":{\"keccak256\":\"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012\",\"dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM\"]},\"src/governance/libraries/compressed-data/Configuration.sol\":{\"keccak256\":\"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482\",\"dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv\"]},\"src/governance/libraries/compressed-data/Proposal.sol\":{\"keccak256\":\"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6\",\"dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN\"]},\"src/shared/libraries/BN254Lib.sol\":{\"keccak256\":\"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a\",\"dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52\"]},\"src/shared/libraries/CompressedTimeMath.sol\":{\"keccak256\":\"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3\",\"dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB\"]},\"src/shared/libraries/TimeMath.sol\":{\"keccak256\":\"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914\",\"dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"__owner","type":"address"},{"internalType":"contract IERC20","name":"_asset","type":"address"},{"internalType":"uint256","name":"_activationThreshold","type":"uint256"},{"internalType":"uint256","name":"_ejectionThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"Delegation__InsufficientPower"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__AlreadyRegistered"},{"inputs":[{"internalType":"uint256","name":"existingPk1x","type":"uint256"},{"internalType":"uint256","name":"existingPk1y","type":"uint256"}],"type":"error","name":"GSE__CannotChangePublicKeys"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__FailedToRemove"},{"inputs":[],"type":"error","name":"GSE__GovernanceAlreadySet"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InstanceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"GSE__InsufficientBalance"},{"inputs":[],"type":"error","name":"GSE__InvalidProofOfPossession"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InvalidRollupAddress"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotLatestRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotWithdrawer"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NothingToExit"},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"type":"error","name":"GSE__ProofOfPossessionAlreadySeen"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__RollupAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue"},{"inputs":[],"type":"error","name":"Governance__CheckpointedUintLib__NotInPast"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"oldDelegatee","type":"address","indexed":false},{"internalType":"address","name":"newDelegatee","type":"address","indexed":false}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegatee","type":"address","indexed":true},{"internalType":"uint256","name":"oldValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"instance","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"withdrawer","type":"address","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ACTIVATION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BONUS_INSTANCE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EJECTION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_rollup","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addRollup"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_withdrawer","type":"address"},{"internalType":"struct G1Point","name":"_publicKeyInG1","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"struct G2Point","name":"_publicKeyInG2","type":"tuple","components":[{"internalType":"uint256","name":"x0","type":"uint256"},{"internalType":"uint256","name":"x1","type":"uint256"},{"internalType":"uint256","name":"y0","type":"uint256"},{"internalType":"uint256","name":"y1","type":"uint256"}]},{"internalType":"struct G1Point","name":"_proofOfPossession","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bool","name":"_moveWithLatestRollup","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"getGovernance","outputs":[{"internalType":"contract Governance","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLatestRollup","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLatestRollupAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"}],"stateMutability":"view","type":"function","name":"isRollupRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"stateMutability":"view","type":"function","name":"ownedPKs","outputs":[{"internalType":"bool","name":"isRegistered","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proofOfPossessionGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"contract IPayload","name":"_payload","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeWithLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract Governance","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGovernance"},{"inputs":[{"internalType":"uint64","name":"_proofOfPossessionGasLimit","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setProofOfPossessionGasLimit"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"vote"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"voteWithBonus"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addRollup(address)":{"details":"rollups only have access to the \"bonus instance\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.","params":{"_rollup":"- The address of the rollup to add"}},"constructor":{"params":{"__owner":"- The owner of the GSE. Initially a deployer to allow adding an initial rollup, then handed over to governance.","_activationThreshold":"- The amount of asset required to deposit an attester on the rollup.","_asset":"- The ERC20 token asset used in governance and for sybil resistance. This token is deposited by attesters to gain voting power in governance (ratio of voting power to staked amount is 1:1).","_ejectionThreshold":"- The minimum amount of asset required to be in the set to be considered an attester. If the balance falls below this threshold, the attester is ejected from the set."}},"delegate(address,address,address)":{"details":"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \"active\" in order to use it. See `Governance.getProposalState` for more details.","params":{"_attester":"- The address of the attester to delegate on behalf of","_delegatee":"- The delegatee that should receive the power","_instance":"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged."}},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"details":"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.","params":{"_attester":"- The attester address on behalf of which the deposit is made.","_moveWithLatestRollup":"- Whether to deposit into the specific instance, or the bonus instance","_proofOfPossession":"- A proof of possessions for the private key corresponding _publicKey in G1 and G2","_publicKeyInG1":"- BLS public key for the attester in G1","_publicKeyInG2":"- BLS public key for the attester in G2","_withdrawer":"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts."}},"finalizeWithdraw(uint256)":{"details":"Will be a no operation if the withdrawal is already collected.","params":{"_withdrawalId":"- The id of the withdrawal"}},"getLatestRollup()":{"returns":{"_0":"The address of the latest instance"}},"getLatestRollupAt(uint256)":{"params":{"_timestamp":"- The timestamp to lookup"},"returns":{"_0":"The address of the latest instance at the time of lookup"}},"isRegistered(address,address)":{"params":{"_attester":"- The attester to lookup","_instance":"- The instance to look at"},"returns":{"_0":"True if the `_attester` is in the set of `_instance`, false otherwise"}},"owner()":{"details":"Returns the address of the current owner."},"proposeWithLock(address,address)":{"details":"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.","params":{"_payload":"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.","_to":"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)"},"returns":{"_0":"The id of the proposal"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"vote(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on","_support":"- True if supporting the proposal, false otherwise."}},"voteWithBonus(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on"}},"withdraw(address,uint256)":{"details":"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \"what to do\" with the funds. And it must look at the returned amount withdrawn and the bool.","params":{"_amount":"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.","_attester":"- The attester to withdraw from."},"returns":{"_0":"The actual amount withdrawn.","_1":"True if attester is removed from set, false otherwise","_2":"The id of the withdrawal at the governance"}}},"version":1},"userdoc":{"kind":"user","methods":{"BONUS_INSTANCE_ADDRESS()":{"notice":"Create a special \"bonus\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \"instances\", and an \"instance\" is either the address of a \"true\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \"bonus\" address, which has its own accounting. NB: in every other context, \"instance\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \"rollup\" if we know we're talking about a rollup (often msg.sender), and \"instance\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \"bonus\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \"buckets\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \"effective\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \"affected instance\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc."},"addRollup(address)":{"notice":"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set"},"delegate(address,address,address)":{"notice":"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions."},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"notice":"Deposits a new attester"},"finalizeWithdraw(uint256)":{"notice":"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc."},"getLatestRollup()":{"notice":"Get the address of latest instance"},"getLatestRollupAt(uint256)":{"notice":"Get the address of the instance that was latest at time `_timestamp`"},"isRegistered(address,address)":{"notice":"Lookup if the `_attester` is in the `_instance` attester set"},"proposeWithLock(address,address)":{"notice":"Make a proposal to Governance via `Governance.proposeWithLock`"},"vote(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to `msg.sender`"},"voteWithBonus(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal."},"withdraw(address,uint256)":{"notice":"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn."}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/governance/GSE.sol":"GSECore"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b","urls":["bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca","dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f","urls":["bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167","dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"src/governance/Bn254LibWrapper.sol":{"keccak256":"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607","urls":["bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c","dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8"],"license":"Apache-2.0"},"src/governance/GSE.sol":{"keccak256":"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a","urls":["bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273","dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU"],"license":"Apache-2.0"},"src/governance/Governance.sol":{"keccak256":"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5","urls":["bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf","dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw"],"license":"Apache-2.0"},"src/governance/interfaces/IBn254LibWrapper.sol":{"keccak256":"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a","urls":["bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9","dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej"],"license":"Apache-2.0"},"src/governance/interfaces/IGovernance.sol":{"keccak256":"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005","urls":["bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff","dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa"],"license":"Apache-2.0"},"src/governance/interfaces/IPayload.sol":{"keccak256":"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3","urls":["bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c","dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin"],"license":"Apache-2.0"},"src/governance/libraries/AddressSnapshotLib.sol":{"keccak256":"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210","urls":["bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402","dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp"],"license":"Apache-2.0"},"src/governance/libraries/CheckpointedUintLib.sol":{"keccak256":"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4","urls":["bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1","dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q"],"license":"Apache-2.0"},"src/governance/libraries/ConfigurationLib.sol":{"keccak256":"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149","urls":["bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a","dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy"],"license":"Apache-2.0"},"src/governance/libraries/DepositDelegationLib.sol":{"keccak256":"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0","urls":["bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb","dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb"],"license":"Apache-2.0"},"src/governance/libraries/Errors.sol":{"keccak256":"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4","urls":["bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa","dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv"],"license":"Apache-2.0"},"src/governance/libraries/ProposalLib.sol":{"keccak256":"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90","urls":["bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192","dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Ballot.sol":{"keccak256":"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d","urls":["bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012","dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Configuration.sol":{"keccak256":"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9","urls":["bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482","dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Proposal.sol":{"keccak256":"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a","urls":["bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6","dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN"],"license":"Apache-2.0"},"src/shared/libraries/BN254Lib.sol":{"keccak256":"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5","urls":["bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a","dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52"],"license":"Apache-2.0"},"src/shared/libraries/CompressedTimeMath.sol":{"keccak256":"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1","urls":["bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3","dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB"],"license":"Apache-2.0"},"src/shared/libraries/TimeMath.sol":{"keccak256":"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f","urls":["bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914","dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3"],"license":"Apache-2.0"}},"version":1},"id":128}
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[{"name":"__owner","type":"address","internalType":"address"},{"name":"_asset","type":"address","internalType":"contract IERC20"},{"name":"_activationThreshold","type":"uint256","internalType":"uint256"},{"name":"_ejectionThreshold","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"ACTIVATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ASSET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"BONUS_INSTANCE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"EJECTION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addRollup","inputs":[{"name":"_rollup","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegate","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"},{"name":"_delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_withdrawer","type":"address","internalType":"address"},{"name":"_publicKeyInG1","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_publicKeyInG2","type":"tuple","internalType":"struct G2Point","components":[{"name":"x0","type":"uint256","internalType":"uint256"},{"name":"x1","type":"uint256","internalType":"uint256"},{"name":"y0","type":"uint256","internalType":"uint256"},{"name":"y1","type":"uint256","internalType":"uint256"}]},{"name":"_proofOfPossession","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_moveWithLatestRollup","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeWithdraw","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getGovernance","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Governance"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollup","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollupAt","inputs":[{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRollupRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownedPKs","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"isRegistered","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proofOfPossessionGasLimit","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"proposeWithLock","inputs":[{"name":"_payload","type":"address","internalType":"contract IPayload"},{"name":"_to","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGovernance","inputs":[{"name":"_governance","type":"address","internalType":"contract Governance"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProofOfPossessionGasLimit","inputs":[{"name":"_proofOfPossessionGasLimit","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vote","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"voteWithBonus","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"DelegateChanged","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"oldDelegatee","type":"address","indexed":false,"internalType":"address"},{"name":"newDelegatee","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegatee","type":"address","indexed":true,"internalType":"address"},{"name":"oldValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"instance","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero","inputs":[]},{"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"size","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"Delegation__InsufficientPower","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__AlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__CannotChangePublicKeys","inputs":[{"name":"existingPk1x","type":"uint256","internalType":"uint256"},{"name":"existingPk1y","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__FailedToRemove","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__GovernanceAlreadySet","inputs":[]},{"type":"error","name":"GSE__InstanceDoesNotExist","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__InsufficientBalance","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__InvalidProofOfPossession","inputs":[]},{"type":"error","name":"GSE__InvalidRollupAddress","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotLatestRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotWithdrawer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NothingToExit","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__ProofOfPossessionAlreadySeen","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"GSE__RollupAlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__CheckpointedUintLib__NotInPast","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x61010060405260405161001190610164565b604051809103905ff08015801561002a573d5f5f3e3d5ffd5b506001600160a01b031660805260088054600160a01b600160e01b031916613d0960a41b17905534801561005c575f5ffd5b5060405161362038038061362083398101604081905261007b91610188565b836001600160a01b0381166100a957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100b281610115565b506001600160a01b0390921660e05260a05260c05250739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020527f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51a805460ff191660011790556101cd565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a5c80612bc483390190565b6001600160a01b0381168114610185575f5ffd5b50565b5f5f5f5f6080858703121561019b575f5ffd5b84516101a681610171565b60208601519094506101b781610171565b6040860151606090960151949790965092505050565b60805160a05160c05160e05161298561023f5f395f81816101d6015281816105dc0152818161061b01528181610a910152610afc01525f81816103220152610ee001525f81816102e801528181610a6001528181610ab501528181610b2b0152610bba01525f6114eb01526129855ff3fe608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80636a915516116100bf578063b4ac453611610079578063b4ac4536146102e3578063d3da927f1461030a578063dbc857521461031d578063f2fde38b14610344578063f3fef3a314610357578063f852fef914610385575f5ffd5b80636a91551614610289578063710ca3541461029c578063715018a6146102b05780638da5cb5b146102b8578063ab033ea9146102c8578063b35186a8146102db575f5ffd5b80634bd96ece116101105780634bd96ece146101f857806352097e4e1461022a57806352f44a141461023d57806359264f00146102505780636902c67b146102635780636a18ff7a14610276575f5ffd5b80630928d152146101575780630e9f7e431461016c578063289b3c0d1461017f5780632e341ce01461019d57806330eb4bdd146101b05780634800d97f146101d1575b5f5ffd5b61016a61016536600461227e565b6103b7565b005b61016a61017a366004612295565b61048c565b6101876104c1565b60405161019491906122bb565b60405180910390f35b61016a6101ab3660046122e3565b6104d0565b6101c36101be36600461232b565b61055a565b604051908152602001610194565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b61021a61020636600461227e565b60046020525f908152604090205460ff1681565b6040519015158152602001610194565b61016a61023836600461237f565b610767565b61021a61024b3660046123aa565b6107c1565b61016a61025e3660046123aa565b6107e1565b61016a6102713660046124e1565b61089a565b61016a61028436600461237f565b610c65565b61018761029736600461227e565b610c71565b6101875f5160206129305f395f51905f5281565b61016a610c97565b5f546001600160a01b0316610187565b61016a6102d63660046123aa565b610caa565b610187610cfd565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61021a61031836600461232b565b610d10565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61016a6103523660046123aa565b610d38565b61036a61036536600461258e565b610d75565b60408051938452911515602084015290820152606001610194565b60085461039f90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610194565b5f6103c06104c1565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa158015610406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042a91906125c3565b606001516104885760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610471575f5ffd5b505af1158015610483573d5f5f3e3d5ffd5b505050505b5050565b610494610fe2565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6008546001600160a01b031690565b6104d9836107c1565b8390610502576040516330d32d8760e21b81526004016104f991906122bb565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461054457604051630257d8d760e41b81526004016104f9929190612618565b506105549050600585858561100e565b50505050565b5f5f6105646104c1565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190612632565b516020015190506106046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110d9565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061065290859085906004016126d8565b6020604051808303815f875af115801561066e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069291906126f1565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef24906106c190309085906004016126d8565b5f604051808303815f87803b1580156106d8575f5ffd5b505af11580156106ea573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd915061071c9088908890600401612618565b6020604051808303815f875af1158015610738573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075c919061270c565b925050505b92915050565b5f61077184611133565b905061077c81610c71565b33906001600160a01b031681146107a7576040516305df8ea560e31b81526004016104f991906122bb565b506105545f5160206129305f395f51905f528585856111be565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b6107e9610fe2565b806001600160a01b038116610812576040516327bac29760e21b81526004016104f991906122bb565b506001600160a01b0381165f90815260026020526040902060030154819060ff16156108515760405162cea8b160e11b81526004016104f991906122bb565b506001600160a01b0381165f908152600260205260409020600301805460ff191660011790556108956108834261124d565b6001906001600160a01b038416611281565b505050565b6108a3336107c1565b33906108c3576040516319aaa75960e11b81526004016104f991906122bb565b505f336108ce610cfd565b6001600160a01b03161490508115610902573381610900576040516305df8ea560e31b81526004016104f991906122bb565b505b61090c3388610d10565b153388909161093057604051630d75cd7760e11b81526004016104f9929190612618565b505080156109835761094f5f5160206129305f395f51905f5288610d10565b5f5160206129305f395f51905f529088901561098057604051630d75cd7760e11b81526004016104f9929190612618565b50505b5f8261098f573361099e565b5f5160206129305f395f51905f525b6001600160a01b0381165f9081526002602052604090209091506109c2908961129b565b818990916109e557604051630d75cd7760e11b81526004016104f9929190612618565b50506109f3888787876113d5565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610a576005828a8161100e565b610a846005828a7f0000000000000000000000000000000000000000000000000000000000000000611599565b610ad96001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f00000000000000000000000000000000000000000000000000000000000000006110d9565b5f610ae26104c1565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610b539084907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b6020604051808303815f875af1158015610b6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9391906126f1565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef2490610be29030907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b5f604051808303815f87803b158015610bf9575f5ffd5b505af1158015610c0b573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a604051610c5291906122bb565b60405180910390a3505050505050505050565b610895338484846111be565b5f610761610c89610c818461124d565b600190611628565b6001600160e01b031661167d565b610c9f610fe2565b610ca85f6116b0565b565b610cb2610fe2565b6008546001600160a01b031615610cdb576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f610d0b610c8960016116ff565b905090565b6001600160a01b0382165f908152600260205260408120610d319083611736565b9392505050565b610d40610fe2565b6001600160a01b038116610d69575f604051631e4fbdf760e01b81526004016104f991906122bb565b610d72816116b0565b50565b5f5f5f610d81336107c1565b3390610da1576040516319aaa75960e11b81526004016104f991906122bb565b50335f81815260026020526040812090610dbb8289611736565b905080158015610dda575033610dcf610cfd565b6001600160a01b0316145b8015610e275750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f526002602052610e277f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51789611736565b15610e7d575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206129305f395f51905f527f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51760015b8781610e9d5760405163417f3a0560e01b81526004016104f991906122bb565b505f610eab6005858b611757565b9050808880821015610ed957604051635087517f60e11b8152600481019290925260248201526044016104f9565b508890505f7f0000000000000000000000000000000000000000000000000000000000000000610f098385612737565b1090508015610f4c57610f1c858c61177e565b8b90610f3c576040516304ca9e7360e31b81526004016104f991906122bb565b50829150610f4c6005878d6117e7565b610f596005878d856117f3565b5f610f626104c1565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b8152600401610f8f9291906126d8565b6020604051808303815f875af1158015610fab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcf919061270c565b929c919b50919950975050505050505050565b5f546001600160a01b03163314610ca8573360405163118cdaa760e01b81526004016104f991906122bb565b6001600160a01b038381165f908152602086815260408083208685168452909152902060010154811690821681036110465750610554565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f906110b49084908690612618565b60405180910390a26110d28582846110cd898989611757565b61187a565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526105549085906119b3565b5f5f61113d6104c1565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b815260040161116a91815260200190565b6101a060405180830381865afa158015611186573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111aa9190612787565b6080810151815151919250610d3191611a16565b5f6111c884611133565b90506111d8600586868487611a21565b6111e06104c1565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b158015611230575f5ffd5b505af1158015611242573d5f5f3e3d5ffd5b505050505050505050565b5f63ffffffff82111561127d576040516306dfcc6560e41b815260206004820152602481018390526044016104f9565b5090565b5f8061128e858585611aec565b915091505b935093915050565b5f6001600160a01b0382166112c25760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156112eb57505f610761565b5f6112f5846116ff565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b0319161761010091909216021790559091506113654261124d565b905061139d8161137d866001600160a01b0316611c30565b6001600160e01b0385165f90815260018901602052604090209190611281565b506113c89050816113c06113b285600161285c565b6001600160e01b0316611c30565b879190611281565b5060019695505050505050565b6001600160a01b0384165f90815260036020908152604091829020825180840190935280548084526001909101549183019190915215801561141957506020810151155b815160208301519091611448576040516312d6323b60e11b8152600481019290925260248201526044016104f9565b50505f845f0151856020015160405160200161146e929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff16156114bb57604051636ab4baeb60e11b81526004016104f991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b03169161153c918a918a918a910161287b565b6020604051808303818786fa158015611557573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157c91906126f1565b6104835760405163df4ff27b60e01b815260040160405180910390fd5b8015610554576001600160a01b038084165f90815260208681526040808320938616835290839052812080548492906115d39084906128ca565b90915550506001600160a01b038084165f9081526020839052604081206001015461160292889291168561187a565b61160f6001820183611c63565b5061161f90506002860183611c63565b50505050505050565b81545f908161163985858385611cdd565b905080156116735761165d85611650600184612737565b5f91825260209091200190565b54600160201b90046001600160e01b031661075c565b505f949350505050565b5f6001600160a01b0382111561127d576040516306dfcc6560e41b815260a06004820152602481018390526044016104f9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80545f90801561172e5761171883611650600184612737565b54600160201b90046001600160e01b0316610d31565b5f9392505050565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906117d0575f915050610761565b6117df84826020015185611d38565b949350505050565b6108958383835f61100e565b8015610554576001600160a01b038084165f908152602086815260408083209386168352908390528120805484929061182d908490612737565b90915550506001600160a01b038084165f9081526020839052604081206001015461185d9288929116908561187a565b61186a6001820183611f55565b5061161f90506002860183611f55565b816001600160a01b0316836001600160a01b03161480611898575080155b610554576001600160a01b03831615611925576001600160a01b0383165f90815260018086016020526040822082916118d2910184611f55565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161191a929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610554576001600160a01b0382165f908152600180860160205260408220829161195b910184611c63565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119a3929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af1806119d2576040513d5f823e3d81fd5b50505f513d915081156119e95780600114156119f6565b6001600160a01b0384163b155b156105545783604051635274afe760e01b81526004016104f991906122bb565b5f610d3182846128ca565b5f611a2d868685612002565b6001600160a01b0386165f9081526001880160209081526040808320888452909152902054909150611a5f83826128ca565b8210158683611a6e86856128ca565b909192611aa75760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016104f9565b5050506001600160a01b0386165f908152600188016020908152604080832088845290915281208054859290611ade9084906128ca565b909155505050505050505050565b82545f9081908015611bd8575f611b0887611650600185612737565b805490915063ffffffff80821691600160201b90046001600160e01b0316908816821115611b4957604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff1603611b7c57825463ffffffff16600160201b6001600160e01b03891602178355611bca565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061129392505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081611293565b5f6001600160e01b0382111561127d576040516306dfcc6560e41b815260e06004820152602481018390526044016104f9565b5f5f5f611c6f856116ff565b9050835f03611c8b576001600160e01b03169150819050611cd6565b5f611c9585611c30565b9050611cb5611ca34261124d565b611cad838561285c565b889190611281565b50829050611cc3828261285c565b6001600160e01b03918216955016925050505b9250929050565b5f5b81831015611d30575f611cf28484612027565b5f8781526020902090915063ffffffff86169082015463ffffffff161115611d1c57809250611d2a565b611d278160016128ca565b93505b50611cdf565b509392505050565b5f80611d43856116ff565b9050806001600160e01b0316846001600160e01b031610611d8a57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016104f9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b0390941693909302929092179055611df96001836128dd565b90505f611e054261124d565b9050856001600160e01b0316826001600160e01b031614611f02576001600160e01b0382165f9081526001880160205260408120611e4690610c89906116ff565b90506040518060400160405280600115158152602001611e6e896001600160e01b0316611c30565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b031990941693909317929092179055611efe908390611ede90611c30565b6001600160e01b038a165f90815260018c01602052604090209190611281565b5050505b6001600160e01b0382165f9081526001880160205260408120611f26918390611281565b5050611f4681611f3e846001600160e01b0316611c30565b899190611281565b50600198975050505050505050565b5f5f5f611f61856116ff565b9050835f03611f7d576001600160e01b03169150819050611cd6565b5f611f8785611c30565b90503382826001600160e01b038082169083161015611fdb5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016104f9565b505050611ff4611fea4261124d565b611cad83856128dd565b50829050611cc382826128dd565b6001600160a01b0382165f9081526001808501602052604082206117df910183612041565b5f6120356002848418612910565b610d31908484166128ca565b5f61204b82421190565b612068576040516334dcb7d760e21b815260040160405180910390fd5b61207b6120748361124d565b849061208b565b6001600160e01b03169392505050565b81545f90818160058111156120e5575f6120a48461212c565b6120ae9085612737565b5f8881526020902090915081015463ffffffff90811690871610156120d5578091506120e3565b6120e08160016128ca565b92505b505b5f6120f287878585611cdd565b9050801561211f5761210987611650600184612737565b54600160201b90046001600160e01b0316612121565b5f5b979650505050505050565b5f60018211612139575090565b816001600160801b82106121525760809190911c9060401b5b600160401b82106121685760409190911c9060201b5b600160201b821061217e5760209190911c9060101b5b6201000082106121935760109190911c9060081b5b61010082106121a75760089190911c9060041b5b601082106121ba5760049190911c9060021b5b600482106121c65760011b5b600302600190811c908185816121de576121de6128fc565b048201901c905060018185816121f6576121f66128fc565b048201901c9050600181858161220e5761220e6128fc565b048201901c90506001818581612226576122266128fc565b048201901c9050600181858161223e5761223e6128fc565b048201901c90506001818581612256576122566128fc565b048201901c905061227581858161226f5761226f6128fc565b04821190565b90039392505050565b5f6020828403121561228e575f5ffd5b5035919050565b5f602082840312156122a5575f5ffd5b81356001600160401b0381168114610d31575f5ffd5b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610d72575f5ffd5b5f5f5f606084860312156122f5575f5ffd5b8335612300816122cf565b92506020840135612310816122cf565b91506040840135612320816122cf565b809150509250925092565b5f5f6040838503121561233c575f5ffd5b8235612347816122cf565b91506020830135612357816122cf565b809150509250929050565b8015158114610d72575f5ffd5b803561237a81612362565b919050565b5f5f5f60608486031215612391575f5ffd5b8335925060208401359150604084013561232081612362565b5f602082840312156123ba575f5ffd5b8135610d31816122cf565b604080519081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405290565b604051608081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b5f604082840312156124c2575f5ffd5b6124ca6123c5565b823581526020928301359281019290925250919050565b5f5f5f5f5f5f8688036101608112156124f8575f5ffd5b8735612503816122cf565b96506020880135612513816122cf565b95506125228960408a016124b2565b94506080607f1982011215612535575f5ffd5b5061253e6123f9565b6080880135815260a0880135602082015260c0880135604082015260e0880135606082015292506125738861010089016124b2565b9150612582610140880161236f565b90509295509295509295565b5f5f6040838503121561259f575f5ffd5b82356125aa816122cf565b946020939093013593505050565b805161237a816122cf565b5f60808284031280156125d4575f5ffd5b506125dd6123f9565b825181526020808401519082015260408301516125f9816122cf565b6040820152606083015161260c81612362565b60608201529392505050565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015612645575f5ffd5b5061264e612427565b604082121561265b575f5ffd5b6126636123c5565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215612701575f5ffd5b8151610d3181612362565b5f6020828403121561271c575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561076157610761612723565b80516009811061237a575f5ffd5b5f60408284031215612768575f5ffd5b6127706123c5565b825181526020928301519281019290925250919050565b5f8183036101a08112801561279a575f5ffd5b506127a3612456565b60e08212156127b0575f5ffd5b6127b8612484565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c08086015190820152808252915061280960e0850161274a565b602082015261281b61010085016125b8565b604082015261282d61012085016125b8565b606082015261014084015160808201819052915061284f856101608601612758565b60a0820152949350505050565b6001600160e01b03818116838216019081111561076157610761612723565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526117df60c083018480518252602090810151910152565b8082018082111561076157610761612723565b6001600160e01b03828116828216039081111561076157610761612723565b634e487b7160e01b5f52601260045260245ffd5b5f8261292a57634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a8a264697066735822122018405c2380eaeaff7885572f92668cfc0597fdfbe84420ff1879e7409839685964736f6c634300081e00336080604052348015600e575f5ffd5b50610a408061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80633f78271d14610038578063e98bc44414610060575b5f5ffd5b61004b61004636600461088b565b61008e565b60405190151581526020015b60405180910390f35b61007361006e36600461092f565b6100a2565b60408051825181526020928301519281019290925201610057565b5f61009a8484846100c4565b949350505050565b604080518082019091525f80825260208201526100be826101e4565b92915050565b5f6100ce84610256565b156100ec5760405163204cab4d60e21b815260040160405180910390fd5b6100f58361026b565b156101135760405163204cab4d60e21b815260040160405180910390fd5b61011c82610256565b1561013a5760405163204cab4d60e21b815260040160405180910390fd5b5f610144856101e4565b90505f61015286868661029c565b9050805f0361017457604051631262b41360e01b815260040160405180910390fd5b5f61018885610183898561033c565b6103a3565b90505f6101c3846101836101bd6040805180820182525f80825260209182015281518083019092526001825260029082015290565b8661033c565b90506101d8826101d161040e565b838a6104db565b98975050505050505050565b604080518082019091525f80825260208201525f825f0151836020015160405160200161021b929190918252602082015260400190565b604051602081830303815290604052905061024f75415a5445435f424c535f504f505f424e3235345f563160501b82610598565b9392505050565b80515f901580156100be575050602001511590565b80515f9015801561027e57506020820151155b801561028c57506040820151155b80156100be575050606001511590565b82516020808501518451858301516040808801516060808a015189518a8901518551808b019b909b528a86019890985291890195909552608088019390935260a087015260c086019290925260e0850152610100808501929092528051808503909201825261012090930190925281519101205f9061009a907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190610949565b604080518082019091525f80825260208201526103576107b9565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa90508061039b57604051635d90883360e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526103be6107d7565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508061039b57604051635d3761b560e11b815260040160405180910390fd5b61043560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec815250905090565b5f6104e46107f5565b85518152602080870151818301528581015160408084019190915286516060808501919091528088015160808501528188015160a0850152865160c08501528683015160e085015291850151610100840152845161012084015290840151610140830152830151610160820152610559610814565b5f6020826101808560086107d05a03fa9050806105895760405163a158f26960e01b815260040160405180910390fd5b50516001149695505050505050565b604080518082019091525f80825260208201525f805b5f8585836040516020016105c493929190610968565b60408051601f1981840301815291905280516020909101209050816105e8816109bf565b9250505f5160206109eb5f395f51905f52811061060557506105ae565b5f5f5160206109eb5f395f51905f5282830990505f5160206109eb5f395f51905f5282820990505f5160206109eb5f395f51905f5260038208905061064981610716565b9450905083156106f157805f61066c825f5160206109eb5f395f51905f526109d7565b90508082111561067857905b5f89895f1960405160200161068f93929190610968565b604051602081830303815290604052805190602001205f1c9050806001165f036106cf5760405180604001604052808681526020018481525097506106e7565b60405180604001604052808681526020018381525097505b50505050506106f8565b50506105ae565b8161039b57604051633d7f3d1d60e21b815260040160405180910390fd5b5f5f5f60405160208152602080820152602060408201528460608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206109eb5f395f51905f5260a082015260208160c08360056107d05a03fa9051935090505f5160206109eb5f395f51905f5283800984149150806107b357604051634ccc085960e11b815260040160405180910390fd5b50915091565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5f60408284031215610842575f5ffd5b6040805190810167ffffffffffffffff8111828210171561087157634e487b7160e01b5f52604160045260245ffd5b604052823581526020928301359281019290925250919050565b5f5f5f83850361010081121561089f575f5ffd5b6108a98686610832565b93506080603f19820112156108bc575f5ffd5b506040516080810167ffffffffffffffff811182821017156108ec57634e487b7160e01b5f52604160045260245ffd5b6040908152858101358252606080870135602084015260808701359183019190915260a08601359082015291506109268560c08601610832565b90509250925092565b5f6040828403121561093f575f5ffd5b61024f8383610832565b5f8261096357634e487b7160e01b5f52601260045260245ffd5b500690565b838152606060208201525f83518060608401528060208601608085015e5f608082850101526080601f19601f830116840101915050826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016109d0576109d06109ab565b5060010190565b818103818111156100be576100be6109ab56fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220de9df0f3403cc6ba88f84cc9c26bae092407e794597e756c9f14d996d3fccc6364736f6c634300081e0033","sourceMap":"6575:25215:130:-:0;;;9872:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9817:76:130;;;11696:49;;;-1:-1:-1;;;;;;;;11696:49:130;-1:-1:-1;;;11696:49:130;;;12684:297;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12798:7;-1:-1:-1;;;;;1273:26:35;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:35;;1350:1;1322:31;;;929:51:184;902:18;;1322:31:35;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;12815:14:130;;::::1;;::::0;12835:43:::1;::::0;12884:39:::1;::::0;-1:-1:-1;12929:33:130;::::1;::::0;:9:::1;-1:-1:-1::0;12929:33:130;:40;:47;;-1:-1:-1;;12929:47:130::1;12972:4;12929:47;::::0;;6575:25215;;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;6575:25215:130:-;;;;;;;;:::o;14:131:184:-;-1:-1:-1;;;;;89:31:184;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:628::-;263:6;271;279;287;340:3;328:9;319:7;315:23;311:33;308:53;;;357:1;354;347:12;308:53;389:9;383:16;408:31;433:5;408:31;:::i;:::-;508:2;493:18;;487:25;458:5;;-1:-1:-1;521:33:184;487:25;521:33;:::i;:::-;646:2;631:18;;625:25;742:2;727:18;;;721:25;150:628;;573:7;;-1:-1:-1;150:628:184;-1:-1:-1;;;150:628:184:o;783:203::-;6575:25215:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80636a915516116100bf578063b4ac453611610079578063b4ac4536146102e3578063d3da927f1461030a578063dbc857521461031d578063f2fde38b14610344578063f3fef3a314610357578063f852fef914610385575f5ffd5b80636a91551614610289578063710ca3541461029c578063715018a6146102b05780638da5cb5b146102b8578063ab033ea9146102c8578063b35186a8146102db575f5ffd5b80634bd96ece116101105780634bd96ece146101f857806352097e4e1461022a57806352f44a141461023d57806359264f00146102505780636902c67b146102635780636a18ff7a14610276575f5ffd5b80630928d152146101575780630e9f7e431461016c578063289b3c0d1461017f5780632e341ce01461019d57806330eb4bdd146101b05780634800d97f146101d1575b5f5ffd5b61016a61016536600461227e565b6103b7565b005b61016a61017a366004612295565b61048c565b6101876104c1565b60405161019491906122bb565b60405180910390f35b61016a6101ab3660046122e3565b6104d0565b6101c36101be36600461232b565b61055a565b604051908152602001610194565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b61021a61020636600461227e565b60046020525f908152604090205460ff1681565b6040519015158152602001610194565b61016a61023836600461237f565b610767565b61021a61024b3660046123aa565b6107c1565b61016a61025e3660046123aa565b6107e1565b61016a6102713660046124e1565b61089a565b61016a61028436600461237f565b610c65565b61018761029736600461227e565b610c71565b6101875f5160206129305f395f51905f5281565b61016a610c97565b5f546001600160a01b0316610187565b61016a6102d63660046123aa565b610caa565b610187610cfd565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61021a61031836600461232b565b610d10565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61016a6103523660046123aa565b610d38565b61036a61036536600461258e565b610d75565b60408051938452911515602084015290820152606001610194565b60085461039f90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610194565b5f6103c06104c1565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa158015610406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042a91906125c3565b606001516104885760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610471575f5ffd5b505af1158015610483573d5f5f3e3d5ffd5b505050505b5050565b610494610fe2565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6008546001600160a01b031690565b6104d9836107c1565b8390610502576040516330d32d8760e21b81526004016104f991906122bb565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461054457604051630257d8d760e41b81526004016104f9929190612618565b506105549050600585858561100e565b50505050565b5f5f6105646104c1565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190612632565b516020015190506106046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110d9565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061065290859085906004016126d8565b6020604051808303815f875af115801561066e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069291906126f1565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef24906106c190309085906004016126d8565b5f604051808303815f87803b1580156106d8575f5ffd5b505af11580156106ea573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd915061071c9088908890600401612618565b6020604051808303815f875af1158015610738573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075c919061270c565b925050505b92915050565b5f61077184611133565b905061077c81610c71565b33906001600160a01b031681146107a7576040516305df8ea560e31b81526004016104f991906122bb565b506105545f5160206129305f395f51905f528585856111be565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b6107e9610fe2565b806001600160a01b038116610812576040516327bac29760e21b81526004016104f991906122bb565b506001600160a01b0381165f90815260026020526040902060030154819060ff16156108515760405162cea8b160e11b81526004016104f991906122bb565b506001600160a01b0381165f908152600260205260409020600301805460ff191660011790556108956108834261124d565b6001906001600160a01b038416611281565b505050565b6108a3336107c1565b33906108c3576040516319aaa75960e11b81526004016104f991906122bb565b505f336108ce610cfd565b6001600160a01b03161490508115610902573381610900576040516305df8ea560e31b81526004016104f991906122bb565b505b61090c3388610d10565b153388909161093057604051630d75cd7760e11b81526004016104f9929190612618565b505080156109835761094f5f5160206129305f395f51905f5288610d10565b5f5160206129305f395f51905f529088901561098057604051630d75cd7760e11b81526004016104f9929190612618565b50505b5f8261098f573361099e565b5f5160206129305f395f51905f525b6001600160a01b0381165f9081526002602052604090209091506109c2908961129b565b818990916109e557604051630d75cd7760e11b81526004016104f9929190612618565b50506109f3888787876113d5565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610a576005828a8161100e565b610a846005828a7f0000000000000000000000000000000000000000000000000000000000000000611599565b610ad96001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f00000000000000000000000000000000000000000000000000000000000000006110d9565b5f610ae26104c1565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610b539084907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b6020604051808303815f875af1158015610b6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9391906126f1565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef2490610be29030907f0000000000000000000000000000000000000000000000000000000000000000906004016126d8565b5f604051808303815f87803b158015610bf9575f5ffd5b505af1158015610c0b573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a604051610c5291906122bb565b60405180910390a3505050505050505050565b610895338484846111be565b5f610761610c89610c818461124d565b600190611628565b6001600160e01b031661167d565b610c9f610fe2565b610ca85f6116b0565b565b610cb2610fe2565b6008546001600160a01b031615610cdb576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f610d0b610c8960016116ff565b905090565b6001600160a01b0382165f908152600260205260408120610d319083611736565b9392505050565b610d40610fe2565b6001600160a01b038116610d69575f604051631e4fbdf760e01b81526004016104f991906122bb565b610d72816116b0565b50565b5f5f5f610d81336107c1565b3390610da1576040516319aaa75960e11b81526004016104f991906122bb565b50335f81815260026020526040812090610dbb8289611736565b905080158015610dda575033610dcf610cfd565b6001600160a01b0316145b8015610e275750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f526002602052610e277f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51789611736565b15610e7d575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206129305f395f51905f527f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51760015b8781610e9d5760405163417f3a0560e01b81526004016104f991906122bb565b505f610eab6005858b611757565b9050808880821015610ed957604051635087517f60e11b8152600481019290925260248201526044016104f9565b508890505f7f0000000000000000000000000000000000000000000000000000000000000000610f098385612737565b1090508015610f4c57610f1c858c61177e565b8b90610f3c576040516304ca9e7360e31b81526004016104f991906122bb565b50829150610f4c6005878d6117e7565b610f596005878d856117f3565b5f610f626104c1565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b8152600401610f8f9291906126d8565b6020604051808303815f875af1158015610fab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcf919061270c565b929c919b50919950975050505050505050565b5f546001600160a01b03163314610ca8573360405163118cdaa760e01b81526004016104f991906122bb565b6001600160a01b038381165f908152602086815260408083208685168452909152902060010154811690821681036110465750610554565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f906110b49084908690612618565b60405180910390a26110d28582846110cd898989611757565b61187a565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526105549085906119b3565b5f5f61113d6104c1565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b815260040161116a91815260200190565b6101a060405180830381865afa158015611186573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111aa9190612787565b6080810151815151919250610d3191611a16565b5f6111c884611133565b90506111d8600586868487611a21565b6111e06104c1565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b158015611230575f5ffd5b505af1158015611242573d5f5f3e3d5ffd5b505050505050505050565b5f63ffffffff82111561127d576040516306dfcc6560e41b815260206004820152602481018390526044016104f9565b5090565b5f8061128e858585611aec565b915091505b935093915050565b5f6001600160a01b0382166112c25760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156112eb57505f610761565b5f6112f5846116ff565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b0319161761010091909216021790559091506113654261124d565b905061139d8161137d866001600160a01b0316611c30565b6001600160e01b0385165f90815260018901602052604090209190611281565b506113c89050816113c06113b285600161285c565b6001600160e01b0316611c30565b879190611281565b5060019695505050505050565b6001600160a01b0384165f90815260036020908152604091829020825180840190935280548084526001909101549183019190915215801561141957506020810151155b815160208301519091611448576040516312d6323b60e11b8152600481019290925260248201526044016104f9565b50505f845f0151856020015160405160200161146e929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff16156114bb57604051636ab4baeb60e11b81526004016104f991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b03169161153c918a918a918a910161287b565b6020604051808303818786fa158015611557573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157c91906126f1565b6104835760405163df4ff27b60e01b815260040160405180910390fd5b8015610554576001600160a01b038084165f90815260208681526040808320938616835290839052812080548492906115d39084906128ca565b90915550506001600160a01b038084165f9081526020839052604081206001015461160292889291168561187a565b61160f6001820183611c63565b5061161f90506002860183611c63565b50505050505050565b81545f908161163985858385611cdd565b905080156116735761165d85611650600184612737565b5f91825260209091200190565b54600160201b90046001600160e01b031661075c565b505f949350505050565b5f6001600160a01b0382111561127d576040516306dfcc6560e41b815260a06004820152602481018390526044016104f9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80545f90801561172e5761171883611650600184612737565b54600160201b90046001600160e01b0316610d31565b5f9392505050565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906117d0575f915050610761565b6117df84826020015185611d38565b949350505050565b6108958383835f61100e565b8015610554576001600160a01b038084165f908152602086815260408083209386168352908390528120805484929061182d908490612737565b90915550506001600160a01b038084165f9081526020839052604081206001015461185d9288929116908561187a565b61186a6001820183611f55565b5061161f90506002860183611f55565b816001600160a01b0316836001600160a01b03161480611898575080155b610554576001600160a01b03831615611925576001600160a01b0383165f90815260018086016020526040822082916118d2910184611f55565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161191a929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610554576001600160a01b0382165f908152600180860160205260408220829161195b910184611c63565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119a3929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af1806119d2576040513d5f823e3d81fd5b50505f513d915081156119e95780600114156119f6565b6001600160a01b0384163b155b156105545783604051635274afe760e01b81526004016104f991906122bb565b5f610d3182846128ca565b5f611a2d868685612002565b6001600160a01b0386165f9081526001880160209081526040808320888452909152902054909150611a5f83826128ca565b8210158683611a6e86856128ca565b909192611aa75760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016104f9565b5050506001600160a01b0386165f908152600188016020908152604080832088845290915281208054859290611ade9084906128ca565b909155505050505050505050565b82545f9081908015611bd8575f611b0887611650600185612737565b805490915063ffffffff80821691600160201b90046001600160e01b0316908816821115611b4957604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff1603611b7c57825463ffffffff16600160201b6001600160e01b03891602178355611bca565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061129392505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081611293565b5f6001600160e01b0382111561127d576040516306dfcc6560e41b815260e06004820152602481018390526044016104f9565b5f5f5f611c6f856116ff565b9050835f03611c8b576001600160e01b03169150819050611cd6565b5f611c9585611c30565b9050611cb5611ca34261124d565b611cad838561285c565b889190611281565b50829050611cc3828261285c565b6001600160e01b03918216955016925050505b9250929050565b5f5b81831015611d30575f611cf28484612027565b5f8781526020902090915063ffffffff86169082015463ffffffff161115611d1c57809250611d2a565b611d278160016128ca565b93505b50611cdf565b509392505050565b5f80611d43856116ff565b9050806001600160e01b0316846001600160e01b031610611d8a57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016104f9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b0390941693909302929092179055611df96001836128dd565b90505f611e054261124d565b9050856001600160e01b0316826001600160e01b031614611f02576001600160e01b0382165f9081526001880160205260408120611e4690610c89906116ff565b90506040518060400160405280600115158152602001611e6e896001600160e01b0316611c30565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b031990941693909317929092179055611efe908390611ede90611c30565b6001600160e01b038a165f90815260018c01602052604090209190611281565b5050505b6001600160e01b0382165f9081526001880160205260408120611f26918390611281565b5050611f4681611f3e846001600160e01b0316611c30565b899190611281565b50600198975050505050505050565b5f5f5f611f61856116ff565b9050835f03611f7d576001600160e01b03169150819050611cd6565b5f611f8785611c30565b90503382826001600160e01b038082169083161015611fdb5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016104f9565b505050611ff4611fea4261124d565b611cad83856128dd565b50829050611cc382826128dd565b6001600160a01b0382165f9081526001808501602052604082206117df910183612041565b5f6120356002848418612910565b610d31908484166128ca565b5f61204b82421190565b612068576040516334dcb7d760e21b815260040160405180910390fd5b61207b6120748361124d565b849061208b565b6001600160e01b03169392505050565b81545f90818160058111156120e5575f6120a48461212c565b6120ae9085612737565b5f8881526020902090915081015463ffffffff90811690871610156120d5578091506120e3565b6120e08160016128ca565b92505b505b5f6120f287878585611cdd565b9050801561211f5761210987611650600184612737565b54600160201b90046001600160e01b0316612121565b5f5b979650505050505050565b5f60018211612139575090565b816001600160801b82106121525760809190911c9060401b5b600160401b82106121685760409190911c9060201b5b600160201b821061217e5760209190911c9060101b5b6201000082106121935760109190911c9060081b5b61010082106121a75760089190911c9060041b5b601082106121ba5760049190911c9060021b5b600482106121c65760011b5b600302600190811c908185816121de576121de6128fc565b048201901c905060018185816121f6576121f66128fc565b048201901c9050600181858161220e5761220e6128fc565b048201901c90506001818581612226576122266128fc565b048201901c9050600181858161223e5761223e6128fc565b048201901c90506001818581612256576122566128fc565b048201901c905061227581858161226f5761226f6128fc565b04821190565b90039392505050565b5f6020828403121561228e575f5ffd5b5035919050565b5f602082840312156122a5575f5ffd5b81356001600160401b0381168114610d31575f5ffd5b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610d72575f5ffd5b5f5f5f606084860312156122f5575f5ffd5b8335612300816122cf565b92506020840135612310816122cf565b91506040840135612320816122cf565b809150509250925092565b5f5f6040838503121561233c575f5ffd5b8235612347816122cf565b91506020830135612357816122cf565b809150509250929050565b8015158114610d72575f5ffd5b803561237a81612362565b919050565b5f5f5f60608486031215612391575f5ffd5b8335925060208401359150604084013561232081612362565b5f602082840312156123ba575f5ffd5b8135610d31816122cf565b604080519081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405290565b604051608081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156123f357634e487b7160e01b5f52604160045260245ffd5b5f604082840312156124c2575f5ffd5b6124ca6123c5565b823581526020928301359281019290925250919050565b5f5f5f5f5f5f8688036101608112156124f8575f5ffd5b8735612503816122cf565b96506020880135612513816122cf565b95506125228960408a016124b2565b94506080607f1982011215612535575f5ffd5b5061253e6123f9565b6080880135815260a0880135602082015260c0880135604082015260e0880135606082015292506125738861010089016124b2565b9150612582610140880161236f565b90509295509295509295565b5f5f6040838503121561259f575f5ffd5b82356125aa816122cf565b946020939093013593505050565b805161237a816122cf565b5f60808284031280156125d4575f5ffd5b506125dd6123f9565b825181526020808401519082015260408301516125f9816122cf565b6040820152606083015161260c81612362565b60608201529392505050565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015612645575f5ffd5b5061264e612427565b604082121561265b575f5ffd5b6126636123c5565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215612701575f5ffd5b8151610d3181612362565b5f6020828403121561271c575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561076157610761612723565b80516009811061237a575f5ffd5b5f60408284031215612768575f5ffd5b6127706123c5565b825181526020928301519281019290925250919050565b5f8183036101a08112801561279a575f5ffd5b506127a3612456565b60e08212156127b0575f5ffd5b6127b8612484565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c08086015190820152808252915061280960e0850161274a565b602082015261281b61010085016125b8565b604082015261282d61012085016125b8565b606082015261014084015160808201819052915061284f856101608601612758565b60a0820152949350505050565b6001600160e01b03818116838216019081111561076157610761612723565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526117df60c083018480518252602090810151910152565b8082018082111561076157610761612723565b6001600160e01b03828116828216039081111561076157610761612723565b634e487b7160e01b5f52601260045260245ffd5b5f8261292a57634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a8a264697066735822122018405c2380eaeaff7885572f92668cfc0597fdfbe84420ff1879e7409839685964736f6c634300081e0033","sourceMap":"6575:25215:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23479:222;;;;;;:::i;:::-;;:::i;:::-;;13193:176;;;;;;:::i;:::-;;:::i;29180:105::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26171:404;;;;;;:::i;:::-;;:::i;24616:410::-;;;;;;:::i;:::-;;:::i;:::-;;;1989:25:184;;;1977:2;1962:18;24616:410:130;1843:177:184;10349:29:130;;;;;10815:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2599:14:184;;2592:22;2574:41;;2562:2;2547:18;10815:63:130;2434:187:184;27583:316:130;;;;;;:::i;:::-;;:::i;27903:138::-;;;;;;:::i;:::-;;:::i;14182:356::-;;;;;;:::i;:::-;;:::i;16518:2533::-;;;;;;:::i;:::-;;:::i;26987:155::-;;;;;;:::i;:::-;;:::i;28979:197::-;;;;;;:::i;:::-;;:::i;9633:103::-;;-1:-1:-1;;;;;;;;;;;9633:103:130;;2293:101:35;;;:::i;1638:85::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;1638:85;;12985:204:130;;;;;;:::i;:::-;;:::i;28618:131::-;;;:::i;9960:45::-;;;;;28325:174;;;;;;:::i;:::-;;:::i;10172:43::-;;;;;2543:215:35;;;;;;:::i;:::-;;:::i;20097:2942:130:-;;;;;;:::i;:::-;;:::i;:::-;;;;8852:25:184;;;8920:14;;8913:22;8908:2;8893:18;;8886:50;8952:18;;;8945:34;8840:2;8825:18;20097:2942:130;8656:329:184;11696:49:130;;;;;-1:-1:-1;;;11696:49:130;;-1:-1:-1;;;;;11696:49:130;;;;;;-1:-1:-1;;;;;9152:31:184;;;9134:50;;9122:2;9107:18;11696:49:130;8990:200:184;23479:222:130;23562:14;23579:15;:13;:15::i;:::-;23605:32;;-1:-1:-1;;;23605:32:130;;;;;1989:25:184;;;23562:32:130;;-1:-1:-1;;;;;;23605:17:130;;;;;1962:18:184;;23605:32:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;23600:97;;23655:35;;-1:-1:-1;;;23655:35:130;;;;;1989:25:184;;;-1:-1:-1;;;;;23655:20:130;;;;;1962:18:184;;23655:35:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23600:97;23556:145;23479:222;:::o;13193:176::-;1531:13:35;:11;:13::i;:::-;13310:25:130::1;:54:::0;;-1:-1:-1;;;;;13310:54:130;;::::1;-1:-1:-1::0;;;13310:54:130::1;-1:-1:-1::0;;;;13310:54:130;;::::1;::::0;;;::::1;::::0;;13193:176::o;29180:105::-;29270:10;;-1:-1:-1;;;;;29270:10:130;;29180:105::o;26171:404::-;26289:29;26308:9;26289:18;:29::i;:::-;26353:9;26281:83;;;;;-1:-1:-1;;;26281:83:130;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;26391:19:130;;;26370:18;26391:19;;;:8;:19;;;;;:30;;;;;26435:10;:24;;;26427:84;;;;-1:-1:-1;;;26427:84:130;;;;;;;;;:::i;:::-;-1:-1:-1;26517:53:130;;-1:-1:-1;26517:10:130;26537:9;26548;26559:10;26517:19;:53::i;:::-;26275:300;26171:404;;;:::o;24616:410::-;24710:7;24725:14;24742:15;:13;:15::i;:::-;24725:32;;24763:14;24780:3;-1:-1:-1;;;;;24780:20:130;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;:47;;;;-1:-1:-1;24834:57:130;-1:-1:-1;;;;;24834:5:130;:22;24857:10;24877:4;24780:47;24834:22;:57::i;:::-;24897:35;;-1:-1:-1;;;24897:35:130;;-1:-1:-1;;;;;24897:5:130;:13;;;;:35;;24919:3;;24925:6;;24897:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24939:34:130;;-1:-1:-1;;;24939:34:130;;-1:-1:-1;;;;;24939:11:130;;;;;:34;;24959:4;;24966:6;;24939:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24987:34:130;;-1:-1:-1;;;24987:34:130;;-1:-1:-1;;;;;24987:19:130;;;-1:-1:-1;24987:19:130;;-1:-1:-1;24987:34:130;;25007:8;;25017:3;;24987:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24980:41;;;;24616:410;;;;;:::o;27583:316::-;27693:12;27708:28;27724:11;27708:15;:28::i;:::-;27693:43;;27764:21;27782:2;27764:17;:21::i;:::-;27750:10;;-1:-1:-1;;;;;27750:35:130;;;27742:85;;;;-1:-1:-1;;;27742:85:130;;;;;;;;:::i;:::-;-1:-1:-1;27833:61:130;-1:-1:-1;;;;;;;;;;;27863:11:130;27876:7;27885:8;27833:5;:61::i;27903:138::-;-1:-1:-1;;;;;28009:20:130;27990:4;28009:20;;;:9;:20;;;;;:27;;;;;;27903:138::o;14182:356::-;1531:13:35;:11;:13::i;:::-;14270:7:130;-1:-1:-1;;;;;14270:21:130;::::1;14262:73;;;;-1:-1:-1::0;;;14262:73:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14350:18:130;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;::::0;14360:7;;14350:25:::1;;14349:26;14341:81;;;;-1:-1:-1::0;;;14341:81:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14428:18:130;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;:32:::0;;-1:-1:-1;;14428:32:130::1;14456:4;14428:32;::::0;;14466:67:::1;14479:26;:15;:24;:26::i;:::-;14466:7;::::0;-1:-1:-1;;;;;14507:25:130;::::1;14466:12;:67::i;:::-;;;14182:356:::0;:::o;16518:2533::-;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:130;;;;;;;;:::i;:::-;-1:-1:-1;16773:28:130::1;16825:10;16804:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;16804:31:130::1;;16773:62;;16930:21;16926:115;;;17022:10;16969:23:::0;16961:73:::1;;;;-1:-1:-1::0;;;16961:73:130::1;;;;;;;;:::i;:::-;;16926:115;17118:35;17131:10;17143:9;17118:12;:35::i;:::-;17117:36;17185:10;17197:9;17109:99;;;;;;-1:-1:-1::0;;;17109:99:130::1;;;;;;;;;:::i;:::-;;;17319:23;17315:191;;;17370:47;-1:-1:-1::0;;;;;;;;;;;17407:9:130;17370:12:::1;:47::i;:::-;-1:-1:-1::0;;;;;;;;;;;9706:27:130;17481:9;;17369:48:::1;17352:147;;;;-1:-1:-1::0;;;17352:147:130::1;;;;;;;;;:::i;:::-;;;17315:191;17891:25;17919:21;:59;;17968:10;17919:59;;;-1:-1:-1::0;;;;;;;;;;;17919:59:130::1;-1:-1:-1::0;;;;;18073:28:130;::::1;;::::0;;;:9:::1;:28;::::0;;;;17891:87;;-1:-1:-1;18073:53:130::1;::::0;18116:9;18073:42:::1;:53::i;:::-;18158:17;18177:9;18058:135;;;;;;-1:-1:-1::0;;;18058:135:130::1;;;;;;;;;:::i;:::-;;;18200:86;18224:9;18235:14;18251;18267:18;18200:23;:86::i;:::-;18531:68;::::0;;;;::::1;::::0;;;;;-1:-1:-1;;;;;18531:68:130;;::::1;;::::0;;::::1;::::0;;;18509:19;;::::1;-1:-1:-1::0;18509:19:130;;;:8:::1;:19:::0;;;;;;:90;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;18509:90:130::1;::::0;;;::::1;;::::0;;18606:68:::1;:10;18626:17:::0;18509:19;18626:17;18606:19:::1;:68::i;:::-;18680:78;:10;18707:17:::0;18726:9;18737:20:::1;18680:26;:78::i;:::-;18765:71;-1:-1:-1::0;;;;;18765:5:130::1;:22;18788:10;18808:4;18815:20;18765:22;:71::i;:::-;18843:14;18860:15;:13;:15::i;:::-;18881:49;::::0;-1:-1:-1;;;18881:49:130;;18843:32;;-1:-1:-1;;;;;;18881:5:130::1;:13;::::0;::::1;::::0;:49:::1;::::0;18843:32;;18909:20:::1;::::0;18881:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18936:48:130::1;::::0;-1:-1:-1;;;18936:48:130;;-1:-1:-1;;;;;18936:11:130;::::1;::::0;::::1;::::0;:48:::1;::::0;18956:4:::1;::::0;18963:20:::1;::::0;18936:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19023:9;-1:-1:-1::0;;;;;18996:50:130::1;19004:17;-1:-1:-1::0;;;;;18996:50:130::1;;19034:11;18996:50;;;;;;:::i;:::-;;;;;;;;16767:2284;;;16518:2533:::0;;;;;;:::o;26987:155::-;27088:49;27094:10;27106:11;27119:7;27128:8;27088:5;:49::i;28979:197::-;29068:7;29098:72;:60;29118:39;29135:10;29118:37;:39::i;:::-;29098:7;;:19;:60::i;:::-;-1:-1:-1;;;;;29098:70:130;;:72::i;2293:101:35:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;12985:204:130:-;1531:13:35;:11;:13::i;:::-;13092:10:130::1;::::0;-1:-1:-1;;;;;13092:10:130::1;13084:33:::0;13076:78:::1;;;;-1:-1:-1::0;;;13076:78:130::1;;;;;;;;;;;;13160:10;:24:::0;;-1:-1:-1;;;;;;13160:24:130::1;-1:-1:-1::0;;;;;13160:24:130;;;::::1;::::0;;;::::1;::::0;;12985:204::o;28618:131::-;28685:7;28715:28;:16;:7;:14;:16::i;:28::-;28700:44;;28618:131;:::o;28325:174::-;-1:-1:-1;;;;;28444:20:130;;28425:4;28444:20;;;:9;:20;;;;;:50;;28484:9;28444:39;:50::i;:::-;28437:57;28325:174;-1:-1:-1;;;28325:174:130:o;2543:215:35:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:35;::::1;2623:91;;2700:1;2672:31;;-1:-1:-1::0;;;2672:31:35::1;;;;;;;;:::i;2623:91::-;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;20097:2942:130:-;20215:7;20224:4;20230:7;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:130;;;;;;;;:::i;:::-;-1:-1:-1;20424:10:130::1;20394:27;20492:21:::0;;;:9:::1;:21;::::0;;;;;20540:46:::1;20492:21:::0;20576:9;20540:35:::1;:46::i;:::-;20519:67;;20735:13;20734:14;:49;;;;-1:-1:-1::0;20773:10:130::1;20752:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;20752:31:130::1;;20734:49;:124;;;;-1:-1:-1::0;20795:33:130;::::1;::::0;:9:::1;:33;::::0;:63:::1;:33:::0;20848:9;20795:52:::1;:63::i;:::-;20723:289;;;-1:-1:-1::0;;20944:33:130;9698:36:::1;20944:33:::0;-1:-1:-1;20944:9:130::1;:33;::::0;-1:-1:-1;;;;;;;;;;;20944:33:130;21001:4:::1;20723:289;21067:9:::0;21026:13;21018:60:::1;;;;-1:-1:-1::0;;;21018:60:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21085:15:130::1;21103:55;:10;21127:19:::0;21148:9;21103:23:::1;:55::i;:::-;21085:73:::0;-1:-1:-1;21085:73:130;21183:7;21172:18;;::::1;;21164:78;;;::::0;-1:-1:-1;;;21164:78:130;;::::1;::::0;::::1;13081:25:184::0;;;;13122:18;;;13115:34;13054:18;;21164:78:130::1;12907:248:184::0;21164:78:130::1;-1:-1:-1::0;21341:7:130;;-1:-1:-1;21315:23:130::1;21521:18;21501:17;21341:7:::0;21501;:17:::1;:::i;:::-;:38;21484:55;;21833:9;21829:484;;;21860:44;:16:::0;21894:9;21860:33:::1;:44::i;:::-;21933:9;21852:92;;;;;-1:-1:-1::0;;;21852:92:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21970:7:130;;-1:-1:-1;22050:53:130::1;:10;22072:19:::0;22093:9;22050:21:::1;:53::i;:::-;22557:75;:10;22584:19:::0;22605:9;22616:15;22557:26:::1;:75::i;:::-;22894:20;22917:15;:13;:15::i;:::-;-1:-1:-1::0;;;;;22917:32:130::1;;22950:10;22962:15;22917:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22993:15:::0;;23010:9;;-1:-1:-1;22993:15:130;;-1:-1:-1;20097:2942:130;-1:-1:-1;;;;;;;;20097:2942:130:o;1796:162:35:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;735:10:48;1855:23:35;1851:101;;735:10:48;1901:40:35;;-1:-1:-1;;;1901:40:35;;;;;;;;:::i;5188:515:147:-;-1:-1:-1;;;;;8067:24:147;;;5345:19;8067:24;;;;;;;;;;;:45;;;;;;;;;;:55;;;;;;5418:25;;;;5414:52;;5453:7;;;5414:52;-1:-1:-1;;;;;5471:24:147;;;:13;:24;;;;;;;;;;;:45;;;;;;;;;;;;:55;;:68;;-1:-1:-1;;;;;;5471:68:147;;;;;;;;;;;5550:51;;;;;5577:11;;5471:68;;5550:51;:::i;:::-;;;;;;;;5608:90;5624:5;5631:11;5644:10;5656:41;5669:5;5676:9;5687;5656:12;:41::i;:::-;5608:15;:90::i;:::-;5339:364;5188:515;;;;:::o;1618:188:46:-;1745:53;;;-1:-1:-1;;;;;13645:32:184;;;1745:53:46;;;13627:51:184;13714:32;;13694:18;;;13687:60;13763:18;;;;13756:34;;;1745:53:46;;;;;;;;;;13600:18:184;;;;1745:53:46;;;;;;;;-1:-1:-1;;;;;1745:53:46;-1:-1:-1;;;1745:53:46;;;1718:81;;1738:5;;1718:19;:81::i;31511:277:130:-;31580:9;31656:24;31683:15;:13;:15::i;:::-;-1:-1:-1;;;;;31683:27:130;;31711:11;31683:40;;;;;;;;;;;;;1989:25:184;;1977:2;1962:18;;1843:177;31683:40:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31736:17;;;;31756:15;;:27;31656:67;;-1:-1:-1;31736:47:130;;;:::i;29690:357::-;29789:12;29804:28;29820:11;29804:15;:28::i;:::-;29789:43;-1:-1:-1;29903:53:130;:10;29923:6;29931:11;29789:43;29948:7;29903:19;:53::i;:::-;29990:15;:13;:15::i;:::-;:52;;-1:-1:-1;;;29990:52:130;;;;;16215:25:184;;;16256:18;;;16249:34;;;16326:14;;16319:22;16299:18;;;16292:50;-1:-1:-1;;;;;29990:20:130;;;;;;;16188:18:184;;29990:52:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29783:264;29690:357;;;;:::o;15296:213:62:-;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;16534:36:184;16586:18;;;16579:34;;;16507:18;;15421:41:62;16353:266:184;15370:103:62;-1:-1:-1;15496:5:62;15296:213::o;1277:210:65:-;1389:16;;1442:38;1450:4;1469:3;1474:5;1442:7;:38::i;:::-;1435:45;;;;1277:210;;;;;;;:::o;2127:620:144:-;2213:4;-1:-1:-1;;;;;2233:22:144;;2225:75;;;;-1:-1:-1;;;2225:75:144;;;;;;;;;;;;-1:-1:-1;;;;;2350:37:144;;;;;;:27;;;:37;;;;;:44;;;2346:77;;;-1:-1:-1;2411:5:144;2404:12;;2346:77;2429:13;2445:19;:5;:17;:19::i;:::-;2510:35;;;;;;;;2525:4;2510:35;;-1:-1:-1;;;;;2510:35:144;;;;;;;;;;-1:-1:-1;;;;;2470:37:144;;-1:-1:-1;2470:37:144;;;:27;;;:37;;;;;;:75;;;;;;-1:-1:-1;;;;;;2470:75:144;;;;;;-1:-1:-1;;;;;;2470:75:144;;;;;;;;;;;2510:35;;-1:-1:-1;2565:26:144;:15;:24;:26::i;:::-;2552:39;;2598:75;2638:3;2643:29;2651:8;-1:-1:-1;;;;;2643:27:144;;:29::i;:::-;-1:-1:-1;;;;;2598:34:144;;;;;;:27;;;:34;;;;;;:75;:39;:75::i;:::-;-1:-1:-1;2679:45:144;;-1:-1:-1;2695:3:144;2700:23;2701:9;:5;2709:1;2701:9;:::i;:::-;-1:-1:-1;;;;;2700:21:144;;:23::i;:::-;2679:5;;:45;:15;:45::i;:::-;-1:-1:-1;2738:4:144;;2127:620;-1:-1:-1;;;;;;2127:620:144:o;30051:1456:130:-;-1:-1:-1;;;;;30342:19:130;;30299:40;30342:19;;;:8;:19;;;;;;;;;30299:72;;;;;;;;;;;;;;;;;;;;;;;;;30393:32;:68;;;;-1:-1:-1;30429:27:130;;;;:32;30393:68;30505:27;;30534;;;;30505;;30377:191;;;;-1:-1:-1;;;30377:191:130;;;;;13081:25:184;;;;13122:18;;;13115:34;13054:18;;30377:191:130;12907:248:184;30377:191:130;;;30913:27;30970:14;:16;;;30988:14;:16;;;30953:52;;;;;;;;16981:19:184;;;17025:2;17016:12;;17009:28;17062:2;17053:12;;16824:247;30953:52:130;;;;-1:-1:-1;;30953:52:130;;;;;;;;;30943:63;;30953:52;30943:63;;;;31022:29;;;;:8;:29;;;;;;30943:63;;-1:-1:-1;30943:63:130;;31022:29;;31021:30;31012:104;;;;-1:-1:-1;;;31012:104:130;;;;;;1989:25:184;;1977:2;1962:18;;1843:177;31012:104:130;-1:-1:-1;31122:29:130;;;;:8;:29;;;;;;;;;:36;;31154:4;-1:-1:-1;;31122:36:130;;;;;;31365:25;;31315:135;;-1:-1:-1;;;31315:135:130;;:17;-1:-1:-1;;;;;31315:35:130;;;;-1:-1:-1;;;31365:25:130;;;-1:-1:-1;;;;;31365:25:130;;31315:135;;31399:14;;31415;;31431:18;;31315:135;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31300:202;;;;-1:-1:-1;;;31300:202:130;;;;;;;;;;;2152:479:147;2313:39;;2339:7;2313:39;-1:-1:-1;;;;;2391:24:147;;;2358:30;2391:24;;;;;;;;;;;2422:29;;;;;;;;;;;:48;;2463:7;;2358:30;2422:48;;2463:7;;2422:48;:::i;:::-;;;;-1:-1:-1;;;;;;;2511:29:147;;;2507:1;2511:29;;;;;;;;;;:39;;;2476:84;;2492:5;;2507:1;2511:39;2552:7;2476:15;:84::i;:::-;2567:28;:15;;;2587:7;2567:19;:28::i;:::-;-1:-1:-1;2601:25:147;;-1:-1:-1;2601:12:147;;;2618:7;2601:16;:25::i;:::-;;;2307:324;2152:479;;;;:::o;2114:297:65:-;2226:24;;2193:7;;;2274:50;2226:4;2312:3;2193:7;2226:24;2274:18;:50::i;:::-;2260:64;-1:-1:-1;2341:8:65;;:63;;2356:41;2370:4;2389:7;2395:1;2389:3;:7;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;;7642:28;;7421:265;2356:41;:48;-1:-1:-1;;;2356:48:65;;-1:-1:-1;;;;;2356:48:65;2341:63;;;-1:-1:-1;2352:1:65;;2114:297;-1:-1:-1;;;;2114:297:65:o;7228:218:62:-;7285:7;-1:-1:-1;;;;;7308:25:62;;7304:105;;;7356:42;;-1:-1:-1;;;7356:42:62;;7387:3;7356:42;;;16534:36:184;16586:18;;;16579:34;;;16507:18;;7356:42:62;16353:266:184;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;3442:206:65:-;3537:24;;3504:7;;3578:8;;:63;;3593:41;3607:4;3626:7;3632:1;3626:3;:7;:::i;3593:41::-;:48;-1:-1:-1;;;3593:48:65;;-1:-1:-1;;;;;3593:48:65;3578:63;;;3589:1;3571:70;3442:206;-1:-1:-1;;;3442:206:65:o;9666:164:144:-;-1:-1:-1;;;;;9781:37:144;9762:4;9781:37;;;:27;;;;;:37;;;;;:44;;;;9666:164::o;6587:223:147:-;-1:-1:-1;;;;;6752:24:147;;;6728:7;6752:24;;;;;;;;;;;:45;;;;;;;;;;:53;;6587:223::o;3008:266:144:-;-1:-1:-1;;;;;3130:37:144;;3097:4;3130:37;;;:27;;;:37;;;;;;;;3109:58;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3109:58:144;;;;;;;;;3173:46;;3207:5;3200:12;;;;;3173:46;3232:37;3240:5;3247;:11;;;3260:8;3232:7;:37::i;:::-;3225:44;3008:266;-1:-1:-1;;;;3008:266:144:o;6096:173:147:-;6215:49;6224:5;6231:9;6242;6261:1;6215:8;:49::i;3045:479::-;3206:39;;3232:7;3206:39;-1:-1:-1;;;;;3284:24:147;;;3251:30;3284:24;;;;;;;;;;;3315:29;;;;;;;;;;;:48;;3356:7;;3251:30;3315:48;;3356:7;;3315:48;:::i;:::-;;;;-1:-1:-1;;;;;;;3392:29:147;;;:18;:29;;;;;;;;;;:39;;;3369:84;;3385:5;;3392:39;;;3445:7;3369:15;:84::i;:::-;3460:28;:15;;;3480:7;3460:19;:28::i;:::-;-1:-1:-1;3494:25:147;;-1:-1:-1;3494:12:147;;;3511:7;3494:16;:25::i;10389:583::-;10538:3;-1:-1:-1;;;;;10529:12:147;:5;-1:-1:-1;;;;;10529:12:147;;:28;;;-1:-1:-1;10545:12:147;;10529:28;10567:7;10525:55;-1:-1:-1;;;;;10590:19:147;;;10586:191;;-1:-1:-1;;;;;10658:27:147;;10620:16;10658:27;;;:20;;;;:27;;;;;10620:16;;10658:52;;:39;10702:7;10658:43;:52::i;:::-;10619:91;;;;10744:5;-1:-1:-1;;;;;10723:47:147;;10751:8;10761;10723:47;;;;;;13081:25:184;;;13137:2;13122:18;;13115:34;13069:2;13054:18;;12907:248;10723:47:147;;;;;;;;10611:166;;10586:191;-1:-1:-1;;;;;10787:17:147;;;10783:185;;-1:-1:-1;;;;;10853:25:147;;10815:16;10853:25;;;:20;;;;:25;;;;;10815:16;;10853:50;;:37;10895:7;10853:41;:50::i;:::-;10814:89;;;;10937:3;-1:-1:-1;;;;;10916:45:147;;10942:8;10952;10916:45;;;;;;13081:25:184;;;13137:2;13122:18;;13115:34;13069:2;13054:18;;12907:248;10916:45:147;;;;;;;;10806:162;;10389:583;;;;:::o;7686:720:46:-;7766:18;7794:19;7932:4;7929:1;7922:4;7916:11;7909:4;7903;7899:15;7896:1;7889:5;7882;7877:60;7989:7;7979:176;;8033:4;8027:11;8078:16;8075:1;8070:3;8055:40;8124:16;8119:3;8112:29;7979:176;-1:-1:-1;;8232:1:46;8226:8;8182:16;;-1:-1:-1;8258:15:46;;:68;;8310:11;8325:1;8310:16;;8258:68;;;-1:-1:-1;;;;;8276:26:46;;;:31;8258:68;8254:146;;;8382:5;8349:40;;-1:-1:-1;;;8349:40:46;;;;;;;;:::i;171:148:182:-;235:9;272:43;312:2;289;272:43;:::i;4261:534:147:-;4444:15;4462:47;4479:5;4486:10;4498;4462:16;:47::i;:::-;-1:-1:-1;;;;;9763:32:147;;4515:17;9763:32;;;:20;;;:32;;;;;;;;:55;;;;;;;;;4444:65;;-1:-1:-1;4612:19:147;4624:7;9763:55;4612:19;:::i;:::-;4601:30;;;4670:10;4601:7;4691:19;4703:7;4691:9;:19;:::i;:::-;4586:131;;;;;;;-1:-1:-1;;;4586:131:147;;-1:-1:-1;;;;;18747:32:184;;;4586:131:147;;;18729:51:184;18796:18;;;18789:34;;;;18839:18;;;18832:34;18702:18;;4586:131:147;18527:345:184;4586:131:147;-1:-1:-1;;;;;;;;4724:32:147;;;;;;:20;;;:32;;;;;;;;:55;;;;;;;;:66;;4783:7;;4724:32;:66;;4783:7;;4724:66;:::i;:::-;;;;-1:-1:-1;;;;;;;;;4261:534:147:o;4789:922:65:-;4970:11;;4910:16;;;;4996:7;;4992:713;;5019:26;5048:28;5062:4;5068:7;5074:1;5068:3;:7;:::i;5048:28::-;5107:9;;;;-1:-1:-1;5107:9:65;;;;;-1:-1:-1;;;5150:11:65;;-1:-1:-1;;;;;5150:11:65;;5235:13;;;;5231:89;;;5275:30;;-1:-1:-1;;;5275:30:65;;;;;;;;;;;5231:89;5394:3;5383:14;;:7;:14;;;5379:163;;5417:19;;;;-1:-1:-1;;;;;;;;5417:19:65;;;;;;5379:163;;;5485:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:41:65;;;;;;;;;;5475:52;;;;;;;-1:-1:-1;5475:52:65;;;;;;;;;;;;;;-1:-1:-1;;;5475:52:65;;;;;;;;;;5379:163;5563:9;-1:-1:-1;5574:5:65;;-1:-1:-1;5555:25:65;;-1:-1:-1;;;5555:25:65;4992:713;-1:-1:-1;;5621:41:65;;;;;;;;;;;;;;;-1:-1:-1;;;;;5621:41:65;;;;;;;;;;5611:52;;;;;;;-1:-1:-1;5611:52:65;;;;;;;;;;;;;-1:-1:-1;;;5611:52:65;;;;;;;;;;;;-1:-1:-1;;5655:5:65;5677:17;;3156:218:62;3213:7;-1:-1:-1;;;;;3236:25:62;;3232:105;;;3284:42;;-1:-1:-1;;;3284:42:62;;3315:3;3284:42;;;16534:36:184;16586:18;;;16579:34;;;16507:18;;3284:42:62;16353:266:184;957:352:145;1041:7;1050;1065:15;1083:14;:5;:12;:14::i;:::-;1065:32;;1107:7;1118:1;1107:12;1103:58;;-1:-1:-1;;;;;1129:25:145;;-1:-1:-1;1129:25:145;;-1:-1:-1;1129:25:145;;1103:58;1166:14;1183:19;:7;:17;:19::i;:::-;1166:36;;1208:56;1219:26;:15;:24;:26::i;:::-;1247:16;1257:6;1247:7;:16;:::i;:::-;1208:5;;:56;:10;:56::i;:::-;-1:-1:-1;1278:7:145;;-1:-1:-1;1287:16:145;1297:6;1278:7;1287:16;:::i;:::-;-1:-1:-1;;;;;1270:34:145;;;;-1:-1:-1;1270:34:145;;-1:-1:-1;;;957:352:145;;;;;;:::o;6061:433:65:-;6218:7;6237:230;6250:4;6244:3;:10;6237:230;;;6270:11;6284:23;6297:3;6302:4;6284:12;:23::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;6270:37;;-1:-1:-1;6325:35:65;;;;7642:28;;6325:29;;;:35;6321:136;;;6387:3;6380:10;;6321:136;;;6435:7;:3;6441:1;6435:7;:::i;:::-;6429:13;;6321:136;6256:211;6237:230;;;-1:-1:-1;6483:4:65;6061:433;-1:-1:-1;;;6061:433:65:o;4039:1503:144:-;4145:4;;4179:19;:5;:17;:19::i;:::-;4157:41;;4218:11;-1:-1:-1;;;;;4208:21:144;:6;-1:-1:-1;;;;;4208:21:144;;4204:106;;4246:57;;-1:-1:-1;;;4246:57:144;;-1:-1:-1;;;;;19341:32:184;;;4246:57:144;;;19323:51:184;19410:32;;19390:18;;;19383:60;19296:18;;4246:57:144;19149:300:184;4204:106:144;4406:32;;;;;;;;-1:-1:-1;4406:32:144;;;;;;;;;;-1:-1:-1;;;;;4366:37:144;;;;:27;;;:37;;;;;;:72;;;;;;-1:-1:-1;;;;;;4366:72:144;;;;;;-1:-1:-1;;;;;;4366:72:144;;;-1:-1:-1;;;;;4366:72:144;;;;;;;;;;;;;4773:15;-1:-1:-1;4773:11:144;:15;:::i;:::-;4753:35;;4794:10;4807:26;:15;:24;:26::i;:::-;4794:39;;4955:6;-1:-1:-1;;;;;4942:19:144;:9;-1:-1:-1;;;;;4942:19:144;;4938:323;;-1:-1:-1;;;;;5003:38:144;;4971:21;5003:38;;;:27;;;:38;;;;;:59;;:47;;:45;:47::i;:59::-;4971:92;;5117:48;;;;;;;;5132:4;5117:48;;;;;;5145:18;:6;-1:-1:-1;;;;;5145:16:144;;:18::i;:::-;-1:-1:-1;;;;;5117:48:144;;;;;;-1:-1:-1;;;;;5072:42:144;;;;;;:27;;;:42;;;;;;;;:93;;;;;;;;;;;;;;-1:-1:-1;;;;;;5072:93:144;;;;;;;-1:-1:-1;;;;;;5072:93:144;;;;;;;;;;;;;5173:81;;5214:3;;5219:34;;:32;:34::i;:::-;-1:-1:-1;;;;;5173:35:144;;;;;;:27;;;:35;;;;;;:81;:40;:81::i;:::-;;;4963:298;4938:323;-1:-1:-1;;;;;5337:38:144;;5394:1;5337:38;;;:27;;;:38;;;;;:60;;5381:3;;5337:43;:60::i;:::-;;;5475:45;5491:3;5496:23;5497:9;-1:-1:-1;;;;;5496:21:144;;:23::i;:::-;5475:5;;:45;:15;:45::i;:::-;-1:-1:-1;5533:4:144;;4039:1503;-1:-1:-1;;;;;;;;4039:1503:144:o;1532:472:145:-;1616:7;1625;1640:15;1658:14;:5;:12;:14::i;:::-;1640:32;;1682:7;1693:1;1682:12;1678:58;;-1:-1:-1;;;;;1704:25:145;;-1:-1:-1;1704:25:145;;-1:-1:-1;1704:25:145;;1678:58;1741:14;1758:19;:7;:17;:19::i;:::-;1741:36;-1:-1:-1;1868:10:145;1791:7;1741:36;-1:-1:-1;;;;;1791:17:145;;;;;;;;1783:114;;;;-1:-1:-1;;;1783:114:145;;-1:-1:-1;;;;;19877:32:184;;;1783:114:145;;;19859:51:184;-1:-1:-1;;;;;19946:32:184;;;19926:18;;;19919:60;20015:32;19995:18;;;19988:60;19832:18;;1783:114:145;19657:397:184;1783:114:145;;;;1903:56;1914:26;:15;:24;:26::i;:::-;1942:16;1952:6;1942:7;:16;:::i;1903:56::-;-1:-1:-1;1973:7:145;;-1:-1:-1;1982:16:145;1992:6;1973:7;1982:16;:::i;8980:242:147:-;-1:-1:-1;;;;;9153:32:147;;9129:7;9153:32;;;:20;;;;:32;;;;;:64;;:44;9206:10;9153:52;:64::i;3595:153:61:-;3657:7;3730:11;3740:1;3731:5;;;3730:11;:::i;:::-;3720:21;;3721:5;;;3720:21;:::i;2731:286:145:-;2824:7;2847:39;:5;2870:15;-1:-1:-1;551:43:182;471:126;2847:39:145;2839:101;;;;-1:-1:-1;;;2839:101:145;;;;;;;;;;;;2953:59;2977:34;2994:5;2977:32;:34::i;:::-;2953:5;;:23;:59::i;:::-;-1:-1:-1;;;;;2946:66:145;;2731:286;-1:-1:-1;;;2731:286:145:o;2716:606:65:-;2834:24;;2801:7;;;2834:24;2933:1;2927:7;;2923:234;;;2950:11;2970:14;2980:3;2970:9;:14::i;:::-;2964:20;;:3;:20;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;2950:34;;-1:-1:-1;7642:28:65;;3008:42;;;;;3002:48;;;;2998:149;;;3077:3;3070:10;;2998:149;;;3125:7;:3;3131:1;3125:7;:::i;:::-;3119:13;;2998:149;2936:221;2923:234;3167:11;3181:53;3200:4;3219:3;3224;3229:4;3181:18;:53::i;:::-;3167:67;-1:-1:-1;3252:8:65;;:63;;3267:41;3281:4;3300:7;3306:1;3300:3;:7;:::i;3267:41::-;:48;-1:-1:-1;;;3267:48:65;;-1:-1:-1;;;;;3267:48:65;3252:63;;;3263:1;3252:63;3245:70;2716:606;-1:-1:-1;;;;;;;2716:606:65:o;18080:5181:61:-;18128:7;18246:1;18241;:6;18237:53;;-1:-1:-1;18274:1:61;18080:5181::o;18237:53::-;19230:1;19258;-1:-1:-1;;;19278:16:61;;19274:92;;19321:3;19314:10;;;;;19349:2;19342:9;19274:92;-1:-1:-1;;;19383:2:61;:15;19379:90;;19425:2;19418:9;;;;;19452:2;19445:9;19379:90;-1:-1:-1;;;19486:2:61;:15;19482:90;;19528:2;19521:9;;;;;19555:2;19548:9;19482:90;19596:7;19589:2;:15;19585:89;;19631:2;19624:9;;;;;19658:1;19651:8;19585:89;19698:6;19691:2;:14;19687:87;;19732:1;19725:8;;;;;19758:1;19751:8;19687:87;19798:6;19791:2;:14;19787:87;;19832:1;19825:8;;;;;19858:1;19851:8;19787:87;19898:6;19891:2;:14;19887:61;;19932:1;19925:8;19887:61;20374:1;:6;20385:1;20373:13;;;;;22284:1;20373:13;22284:6;;;;:::i;:::-;;22279:2;:11;22278:18;;22273:23;;22404:1;22397:2;22393:1;:6;;;;;:::i;:::-;;22388:2;:11;22387:18;;22382:23;;22515:1;22508:2;22504:1;:6;;;;;:::i;:::-;;22499:2;:11;22498:18;;22493:23;;22624:1;22617:2;22613:1;:6;;;;;:::i;:::-;;22608:2;:11;22607:18;;22602:23;;22734:1;22727:2;22723:1;:6;;;;;:::i;:::-;;22718:2;:11;22717:18;;22712:23;;22844:1;22837:2;22833:1;:6;;;;;:::i;:::-;;22828:2;:11;22827:18;;22822:23;;23216:28;23241:2;23237:1;:6;;;;;:::i;:::-;;23232:11;;;34795:145:62;23216:28:61;23211:33;;;18080:5181;-1:-1:-1;;;18080:5181:61:o;14:226:184:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:184;;14:226;-1:-1:-1;14:226:184:o;245:284::-;303:6;356:2;344:9;335:7;331:23;327:32;324:52;;;372:1;369;362:12;324:52;411:9;398:23;-1:-1:-1;;;;;454:5:184;450:30;443:5;440:41;430:69;;495:1;492;485:12;534:223;-1:-1:-1;;;;;718:32:184;;;;700:51;;688:2;673:18;;534:223::o;762:131::-;-1:-1:-1;;;;;837:31:184;;827:42;;817:70;;883:1;880;873:12;898:529;975:6;983;991;1044:2;1032:9;1023:7;1019:23;1015:32;1012:52;;;1060:1;1057;1050:12;1012:52;1099:9;1086:23;1118:31;1143:5;1118:31;:::i;:::-;1168:5;-1:-1:-1;1225:2:184;1210:18;;1197:32;1238:33;1197:32;1238:33;:::i;:::-;1290:7;-1:-1:-1;1349:2:184;1334:18;;1321:32;1362:33;1321:32;1362:33;:::i;:::-;1414:7;1404:17;;;898:529;;;;;:::o;1432:406::-;1518:6;1526;1579:2;1567:9;1558:7;1554:23;1550:32;1547:52;;;1595:1;1592;1585:12;1547:52;1634:9;1621:23;1653:31;1678:5;1653:31;:::i;:::-;1703:5;-1:-1:-1;1760:2:184;1745:18;;1732:32;1773:33;1732:32;1773:33;:::i;:::-;1825:7;1815:17;;;1432:406;;;;;:::o;2626:118::-;2712:5;2705:13;2698:21;2691:5;2688:32;2678:60;;2734:1;2731;2724:12;2749:128;2814:20;;2843:28;2814:20;2843:28;:::i;:::-;2749:128;;;:::o;2882:481::-;2956:6;2964;2972;3025:2;3013:9;3004:7;3000:23;2996:32;2993:52;;;3041:1;3038;3031:12;2993:52;3086:23;;;-1:-1:-1;3206:2:184;3191:18;;3178:32;;-1:-1:-1;3288:2:184;3273:18;;3260:32;3301:30;3260:32;3301:30;:::i;3368:247::-;3427:6;3480:2;3468:9;3459:7;3455:23;3451:32;3448:52;;;3496:1;3493;3486:12;3448:52;3535:9;3522:23;3554:31;3579:5;3554:31;:::i;3620:354::-;3692:4;3686:11;;;3724:17;;-1:-1:-1;;;;;3756:34:184;;3792:22;;;3753:62;3750:185;;;3857:10;3852:3;3848:20;3845:1;3838:31;3892:4;3889:1;3882:15;3920:4;3917:1;3910:15;3750:185;3951:4;3944:24;3620:354;:::o;3979:349::-;4051:2;4045:9;4093:3;4081:16;;-1:-1:-1;;;;;4112:34:184;;4148:22;;;4109:62;4106:185;;;4213:10;4208:3;4204:20;4201:1;4194:31;4248:4;4245:1;4238:15;4276:4;4273:1;4266:15;4333:352;4405:2;4399:9;4447:6;4435:19;;-1:-1:-1;;;;;4469:34:184;;4505:22;;;4466:62;4463:185;;;4570:10;4565:3;4561:20;4558:1;4551:31;4605:4;4602:1;4595:15;4633:4;4630:1;4623:15;4690:345;4757:2;4751:9;4799:4;4787:17;;-1:-1:-1;;;;;4819:34:184;;4855:22;;;4816:62;4813:185;;;4920:10;4915:3;4911:20;4908:1;4901:31;4955:4;4952:1;4945:15;4983:4;4980:1;4973:15;5040:350;5112:2;5106:9;5154:4;5142:17;;-1:-1:-1;;;;;5174:34:184;;5210:22;;;5171:62;5168:185;;;5275:10;5270:3;5266:20;5263:1;5256:31;5310:4;5307:1;5300:15;5338:4;5335:1;5328:15;5395:386;5449:5;5497:4;5485:9;5480:3;5476:19;5472:30;5469:50;;;5515:1;5512;5505:12;5469:50;5537:22;;:::i;:::-;5604:23;;5636:22;;5731:2;5716:18;;;5703:32;5751:14;;;5744:31;;;;-1:-1:-1;5528:31:184;5395:386;-1:-1:-1;5395:386:184:o;5786:1357::-;5968:6;5976;5984;5992;6000;6008;6052:9;6043:7;6039:23;6082:3;6078:2;6074:12;6071:32;;;6099:1;6096;6089:12;6071:32;6138:9;6125:23;6157:31;6182:5;6157:31;:::i;:::-;6207:5;-1:-1:-1;6264:2:184;6249:18;;6236:32;6277:33;6236:32;6277:33;:::i;:::-;6329:7;-1:-1:-1;6355:54:184;6401:7;6396:2;6381:18;;6355:54;:::i;:::-;6345:64;-1:-1:-1;6444:3:184;-1:-1:-1;;6425:17:184;;6421:27;6418:47;;;6461:1;6458;6451:12;6418:47;;6489:22;;:::i;:::-;6584:3;6569:19;;6556:33;6598:24;;6695:3;6680:19;;6667:33;6729:2;6716:16;;6709:33;6815:3;6800:19;;6787:33;6849:2;6836:16;;6829:33;6935:3;6920:19;;6907:33;6969:2;6956:16;;6949:33;6605:7;-1:-1:-1;7027:55:184;7074:7;7068:3;7053:19;;7027:55;:::i;:::-;7017:65;;7101:36;7132:3;7121:9;7117:19;7101:36;:::i;:::-;7091:46;;5786:1357;;;;;;;;:::o;8284:367::-;8352:6;8360;8413:2;8401:9;8392:7;8388:23;8384:32;8381:52;;;8429:1;8426;8419:12;8381:52;8468:9;8455:23;8487:31;8512:5;8487:31;:::i;:::-;8537:5;8615:2;8600:18;;;;8587:32;;-1:-1:-1;;;8284:367:184:o;9195:138::-;9274:13;;9296:31;9274:13;9296:31;:::i;9338:745::-;9437:6;9497:3;9485:9;9476:7;9472:23;9468:33;9513:2;9510:22;;;9528:1;9525;9518:12;9510:22;-1:-1:-1;9570:22:184;;:::i;:::-;9637:16;;9662:22;;9750:2;9735:18;;;9729:25;9770:14;;;9763:31;9839:2;9824:18;;9818:25;9852:33;9818:25;9852:33;:::i;:::-;9912:2;9901:14;;9894:31;9970:2;9955:18;;9949:25;9983:30;9949:25;9983:30;:::i;:::-;10040:2;10029:14;;10022:31;10033:5;9338:745;-1:-1:-1;;;9338:745:184:o;10088:300::-;-1:-1:-1;;;;;10280:32:184;;;10262:51;;10349:32;;10344:2;10329:18;;10322:60;10250:2;10235:18;;10088:300::o;10393:1422::-;10495:6;10539:9;10530:7;10526:23;10576:3;10572:2;10568:12;10592:2;10589:22;;;10607:1;10604;10597:12;10589:22;-1:-1:-1;10649:22:184;;:::i;:::-;10691:4;10687:2;10683:13;10680:33;;;10709:1;10706;10699:12;10680:33;10737:22;;:::i;:::-;10804:16;;10829:24;;10919:2;10904:18;;;10898:25;10939:16;;;10932:33;10974:22;;;11062:4;11047:20;;;11041:27;11084:14;;;11077:31;;;;11174:2;11159:18;;;11153:25;11194:16;;;11187:33;;;;11286:3;11271:19;;;11265:26;11307:14;;;11300:31;;;;11397:3;11382:19;;;11376:26;11418:15;;;11411:32;;;;11509:3;11494:19;;;11488:26;11530:15;;;11523:32;;;;11621:3;11606:19;;;11600:26;11642:15;;;11635:32;;;;11735:6;11720:22;;;11714:29;11759:15;;;11752:33;;;;-1:-1:-1;10981:5:184;;10393:1422;-1:-1:-1;;10393:1422:184:o;11820:274::-;-1:-1:-1;;;;;12012:32:184;;;;11994:51;;12076:2;12061:18;;12054:34;11982:2;11967:18;;11820:274::o;12099:245::-;12166:6;12219:2;12207:9;12198:7;12194:23;12190:32;12187:52;;;12235:1;12232;12225:12;12187:52;12267:9;12261:16;12286:28;12308:5;12286:28;:::i;12672:230::-;12742:6;12795:2;12783:9;12774:7;12770:23;12766:32;12763:52;;;12811:1;12808;12801:12;12763:52;-1:-1:-1;12856:16:184;;12672:230;-1:-1:-1;12672:230:184:o;13160:127::-;13221:10;13216:3;13212:20;13209:1;13202:31;13252:4;13249:1;13242:15;13276:4;13273:1;13266:15;13292:128;13359:9;;;13380:11;;;13377:37;;;13394:18;;:::i;13801:158::-;13891:13;;13933:1;13923:12;;13913:40;;13949:1;13946;13939:12;13964:382;14028:5;14076:4;14064:9;14059:3;14055:19;14051:30;14048:50;;;14094:1;14091;14084:12;14048:50;14116:22;;:::i;:::-;14183:16;;14208:22;;14296:2;14281:18;;;14275:25;14316:14;;;14309:31;;;;-1:-1:-1;14107:31:184;13964:382;-1:-1:-1;13964:382:184:o;14351:1663::-;14448:6;14492:9;14483:7;14479:23;14529:3;14525:2;14521:12;14545:2;14542:22;;;14560:1;14557;14550:12;14542:22;-1:-1:-1;14602:17:184;;:::i;:::-;14639:4;14635:2;14631:13;14628:33;;;14657:1;14654;14647:12;14628:33;14685:22;;:::i;:::-;14752:16;;14777:24;;14867:2;14852:18;;;14846:25;14887:16;;;14880:33;14979:2;14964:18;;;14958:25;14999:16;;;14992:33;15091:2;15076:18;;;15070:25;15111:16;;;15104:33;15203:3;15188:19;;;15182:26;15224:17;;;15217:34;15317:3;15302:19;;;15296:26;15338:17;;;15331:34;15431:4;15416:20;;;15410:27;15453:18;;;15446:35;15490:22;;;14670:37;-1:-1:-1;15544:62:184;15600:4;15585:20;;15544:62;:::i;:::-;15539:2;15532:5;15528:14;15521:86;15639:50;15684:3;15673:9;15669:19;15639:50;:::i;:::-;15634:2;15627:5;15623:14;15616:74;15722:50;15767:3;15756:9;15752:19;15722:50;:::i;:::-;15717:2;15706:14;;15699:74;15839:3;15824:19;;15818:26;15871:3;15860:15;;15853:32;;;15818:26;-1:-1:-1;15918:65:184;15975:7;15969:3;15954:19;;15918:65;:::i;:::-;15912:3;15901:15;;15894:90;15905:5;14351:1663;-1:-1:-1;;;;14351:1663:184:o;16624:195::-;-1:-1:-1;;;;;16693:27:184;;;16722;;;16689:61;;16762:28;;16759:54;;;16793:18;;:::i;17411:709::-;17331:12;;17319:25;;17393:4;17382:16;;;17376:23;17360:14;;;17353:47;17763:3;17748:19;;17862:6;17856:13;17851:2;17840:9;17836:18;17829:41;17924:4;17916:6;17912:17;17906:24;17901:2;17890:9;17886:18;17879:52;17986:2;17978:6;17974:15;17968:22;17962:3;17951:9;17947:19;17940:51;18046:2;18038:6;18034:15;18028:22;18022:3;18011:9;18007:19;18000:51;18060:54;18109:3;18098:9;18094:19;18086:6;17331:12;;17319:25;;17393:4;17382:16;;;17376:23;17360:14;;17353:47;17258:148;18125:125;18190:9;;;18211:10;;;18208:36;;;18224:18;;:::i;19454:198::-;-1:-1:-1;;;;;19554:27:184;;;19525;;;19521:61;;19594:29;;19591:55;;;19626:18;;:::i;20059:127::-;20120:10;20115:3;20111:20;20108:1;20101:31;20151:4;20148:1;20141:15;20175:4;20172:1;20165:15;20191:217;20231:1;20257;20247:132;;20301:10;20296:3;20292:20;20289:1;20282:31;20336:4;20333:1;20326:15;20364:4;20361:1;20354:15;20247:132;-1:-1:-1;20393:9:184;;20191:217::o","linkReferences":{},"immutableReferences":{"93056":[{"start":5355,"length":32}],"93058":[{"start":744,"length":32},{"start":2656,"length":32},{"start":2741,"length":32},{"start":2859,"length":32},{"start":3002,"length":32}],"93060":[{"start":802,"length":32},{"start":3808,"length":32}],"93063":[{"start":470,"length":32},{"start":1500,"length":32},{"start":1563,"length":32},{"start":2705,"length":32},{"start":2812,"length":32}]}},"methodIdentifiers":{"ACTIVATION_THRESHOLD()":"b4ac4536","ASSET()":"4800d97f","BONUS_INSTANCE_ADDRESS()":"710ca354","EJECTION_THRESHOLD()":"dbc85752","addRollup(address)":"59264f00","delegate(address,address,address)":"2e341ce0","deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":"6902c67b","finalizeWithdraw(uint256)":"0928d152","getGovernance()":"289b3c0d","getLatestRollup()":"b35186a8","getLatestRollupAt(uint256)":"6a915516","isRegistered(address,address)":"d3da927f","isRollupRegistered(address)":"52f44a14","ownedPKs(bytes32)":"4bd96ece","owner()":"8da5cb5b","proofOfPossessionGasLimit()":"f852fef9","proposeWithLock(address,address)":"30eb4bdd","renounceOwnership()":"715018a6","setGovernance(address)":"ab033ea9","setProofOfPossessionGasLimit(uint64)":"0e9f7e43","transferOwnership(address)":"f2fde38b","vote(uint256,uint256,bool)":"6a18ff7a","voteWithBonus(uint256,uint256,bool)":"52097e4e","withdraw(address,uint256)":"f3fef3a3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__owner\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_activationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ejectionThreshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AddressSnapshotLib__CannotAddAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"name\":\"AddressSnapshotLib__IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"Delegation__InsufficientPower\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"existingPk1x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"existingPk1y\",\"type\":\"uint256\"}],\"name\":\"GSE__CannotChangePublicKeys\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__FailedToRemove\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__GovernanceAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InstanceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GSE__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__InvalidProofOfPossession\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InvalidRollupAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotLatestRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotWithdrawer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NothingToExit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"GSE__ProofOfPossessionAlreadySeen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__RollupAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__CheckpointedUintLib__InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CheckpointedUintLib__NotInPast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldDelegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDelegatee\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACTIVATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BONUS_INSTANCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EJECTION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"}],\"name\":\"addRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_publicKeyInG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"x1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y1\",\"type\":\"uint256\"}],\"internalType\":\"struct G2Point\",\"name\":\"_publicKeyInG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_proofOfPossession\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_moveWithLatestRollup\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGovernance\",\"outputs\":[{\"internalType\":\"contract Governance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getLatestRollupAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"}],\"name\":\"isRollupRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"ownedPKs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isRegistered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofOfPossessionGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_payload\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"proposeWithLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Governance\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_proofOfPossessionGasLimit\",\"type\":\"uint64\"}],\"name\":\"setProofOfPossessionGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"voteWithBonus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aztec Labs\",\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"addRollup(address)\":{\"details\":\"rollups only have access to the \\\"bonus instance\\\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.\",\"params\":{\"_rollup\":\"- The address of the rollup to add\"}},\"constructor\":{\"params\":{\"__owner\":\"- The owner of the GSE. Initially a deployer to allow adding an initial rollup, then handed over to governance.\",\"_activationThreshold\":\"- The amount of asset required to deposit an attester on the rollup.\",\"_asset\":\"- The ERC20 token asset used in governance and for sybil resistance. This token is deposited by attesters to gain voting power in governance (ratio of voting power to staked amount is 1:1).\",\"_ejectionThreshold\":\"- The minimum amount of asset required to be in the set to be considered an attester. If the balance falls below this threshold, the attester is ejected from the set.\"}},\"delegate(address,address,address)\":{\"details\":\"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \\\"active\\\" in order to use it. See `Governance.getProposalState` for more details.\",\"params\":{\"_attester\":\"- The address of the attester to delegate on behalf of\",\"_delegatee\":\"- The delegatee that should receive the power\",\"_instance\":\"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged.\"}},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"details\":\"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.\",\"params\":{\"_attester\":\"- The attester address on behalf of which the deposit is made.\",\"_moveWithLatestRollup\":\"- Whether to deposit into the specific instance, or the bonus instance\",\"_proofOfPossession\":\"- A proof of possessions for the private key corresponding _publicKey in G1 and G2\",\"_publicKeyInG1\":\"- BLS public key for the attester in G1\",\"_publicKeyInG2\":\"- BLS public key for the attester in G2\",\"_withdrawer\":\"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts.\"}},\"finalizeWithdraw(uint256)\":{\"details\":\"Will be a no operation if the withdrawal is already collected.\",\"params\":{\"_withdrawalId\":\"- The id of the withdrawal\"}},\"getLatestRollup()\":{\"returns\":{\"_0\":\"The address of the latest instance\"}},\"getLatestRollupAt(uint256)\":{\"params\":{\"_timestamp\":\"- The timestamp to lookup\"},\"returns\":{\"_0\":\"The address of the latest instance at the time of lookup\"}},\"isRegistered(address,address)\":{\"params\":{\"_attester\":\"- The attester to lookup\",\"_instance\":\"- The instance to look at\"},\"returns\":{\"_0\":\"True if the `_attester` is in the set of `_instance`, false otherwise\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proposeWithLock(address,address)\":{\"details\":\"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.\",\"params\":{\"_payload\":\"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\",\"_to\":\"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)\"},\"returns\":{\"_0\":\"The id of the proposal\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"vote(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\",\"_support\":\"- True if supporting the proposal, false otherwise.\"}},\"voteWithBonus(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\"}},\"withdraw(address,uint256)\":{\"details\":\"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \\\"what to do\\\" with the funds. And it must look at the returned amount withdrawn and the bool.\",\"params\":{\"_amount\":\"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.\",\"_attester\":\"- The attester to withdraw from.\"},\"returns\":{\"_0\":\"The actual amount withdrawn.\",\"_1\":\"True if attester is removed from set, false otherwise\",\"_2\":\"The id of the withdrawal at the governance\"}}},\"title\":\"GSECore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BONUS_INSTANCE_ADDRESS()\":{\"notice\":\"Create a special \\\"bonus\\\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \\\"instances\\\", and an \\\"instance\\\" is either the address of a \\\"true\\\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \\\"bonus\\\" address, which has its own accounting. NB: in every other context, \\\"instance\\\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \\\"rollup\\\" if we know we're talking about a rollup (often msg.sender), and \\\"instance\\\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \\\"bonus\\\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \\\"buckets\\\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \\\"effective\\\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \\\"affected instance\\\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc.\"},\"addRollup(address)\":{\"notice\":\"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set\"},\"delegate(address,address,address)\":{\"notice\":\"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions.\"},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"notice\":\"Deposits a new attester\"},\"finalizeWithdraw(uint256)\":{\"notice\":\"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc.\"},\"getLatestRollup()\":{\"notice\":\"Get the address of latest instance\"},\"getLatestRollupAt(uint256)\":{\"notice\":\"Get the address of the instance that was latest at time `_timestamp`\"},\"isRegistered(address,address)\":{\"notice\":\"Lookup if the `_attester` is in the `_instance` attester set\"},\"proposeWithLock(address,address)\":{\"notice\":\"Make a proposal to Governance via `Governance.proposeWithLock`\"},\"vote(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to `msg.sender`\"},\"voteWithBonus(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn.\"}},\"notice\":\"The core Governance Staking Escrow contract that handles the deposits of attesters on rollup instances. It is responsible for: - depositing/withdrawing attesters on rollup instances - providing rollup instances with historical views of their attesters - allowing depositors to delegate their voting power - allowing delegatees to vote at governance - maintaining a set of \\\"bonus\\\" attesters which are always deposited on behalf of the latest rollup NB: The \\\"bonus\\\" attesters are thus automatically \\\"moved along\\\" whenever the latest rollup changes. That is, at the point of the rollup getting added, the bonus is immediately available. This allows the latest rollup to start with a set of attesters, rather than requiring them to exit the old rollup and deposit in the new one. NB: The \\\"latest\\\" rollup in this contract does not technically need to be the \\\"canonical\\\" rollup according to the Registry, but in practice, it will be unless the new rollup does not use the GSE. Proposals which add rollups that DO want to use the GSE MUST call addRollup to both the Registry and the GSE. See RegisterNewRollupVersionPayload.sol for an example. NB: The \\\"owner\\\" of the GSE is intended to be the Governance contract, but there is a circular dependency in that we also want the GSE to be registered as the first beneficiary of the governance contract so that we don't need to go through a governance proposal to add it. To that end, this contract's view of `governance` needs to be set. So the current flow is to deploy the GSE with the owner set to the deployer, then deploy Governance, passing the GSE as the initial/sole authorized beneficiary, then have the deployer `setGovernance`, and then `transferOwnership` to Governance.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/governance/GSE.sol\":\"GSECore\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca\",\"dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167\",\"dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"src/governance/Bn254LibWrapper.sol\":{\"keccak256\":\"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c\",\"dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8\"]},\"src/governance/GSE.sol\":{\"keccak256\":\"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273\",\"dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU\"]},\"src/governance/Governance.sol\":{\"keccak256\":\"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf\",\"dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw\"]},\"src/governance/interfaces/IBn254LibWrapper.sol\":{\"keccak256\":\"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9\",\"dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej\"]},\"src/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff\",\"dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa\"]},\"src/governance/interfaces/IPayload.sol\":{\"keccak256\":\"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c\",\"dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin\"]},\"src/governance/libraries/AddressSnapshotLib.sol\":{\"keccak256\":\"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402\",\"dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp\"]},\"src/governance/libraries/CheckpointedUintLib.sol\":{\"keccak256\":\"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1\",\"dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q\"]},\"src/governance/libraries/ConfigurationLib.sol\":{\"keccak256\":\"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a\",\"dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy\"]},\"src/governance/libraries/DepositDelegationLib.sol\":{\"keccak256\":\"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb\",\"dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb\"]},\"src/governance/libraries/Errors.sol\":{\"keccak256\":\"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa\",\"dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv\"]},\"src/governance/libraries/ProposalLib.sol\":{\"keccak256\":\"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192\",\"dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT\"]},\"src/governance/libraries/compressed-data/Ballot.sol\":{\"keccak256\":\"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012\",\"dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM\"]},\"src/governance/libraries/compressed-data/Configuration.sol\":{\"keccak256\":\"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482\",\"dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv\"]},\"src/governance/libraries/compressed-data/Proposal.sol\":{\"keccak256\":\"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6\",\"dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN\"]},\"src/shared/libraries/BN254Lib.sol\":{\"keccak256\":\"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a\",\"dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52\"]},\"src/shared/libraries/CompressedTimeMath.sol\":{\"keccak256\":\"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3\",\"dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB\"]},\"src/shared/libraries/TimeMath.sol\":{\"keccak256\":\"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914\",\"dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"__owner","type":"address"},{"internalType":"contract IERC20","name":"_asset","type":"address"},{"internalType":"uint256","name":"_activationThreshold","type":"uint256"},{"internalType":"uint256","name":"_ejectionThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"Delegation__InsufficientPower"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__AlreadyRegistered"},{"inputs":[{"internalType":"uint256","name":"existingPk1x","type":"uint256"},{"internalType":"uint256","name":"existingPk1y","type":"uint256"}],"type":"error","name":"GSE__CannotChangePublicKeys"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__FailedToRemove"},{"inputs":[],"type":"error","name":"GSE__GovernanceAlreadySet"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InstanceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"GSE__InsufficientBalance"},{"inputs":[],"type":"error","name":"GSE__InvalidProofOfPossession"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InvalidRollupAddress"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotLatestRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotWithdrawer"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NothingToExit"},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"type":"error","name":"GSE__ProofOfPossessionAlreadySeen"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__RollupAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue"},{"inputs":[],"type":"error","name":"Governance__CheckpointedUintLib__NotInPast"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"oldDelegatee","type":"address","indexed":false},{"internalType":"address","name":"newDelegatee","type":"address","indexed":false}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegatee","type":"address","indexed":true},{"internalType":"uint256","name":"oldValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"instance","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"withdrawer","type":"address","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ACTIVATION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BONUS_INSTANCE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EJECTION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_rollup","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addRollup"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_withdrawer","type":"address"},{"internalType":"struct G1Point","name":"_publicKeyInG1","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"struct G2Point","name":"_publicKeyInG2","type":"tuple","components":[{"internalType":"uint256","name":"x0","type":"uint256"},{"internalType":"uint256","name":"x1","type":"uint256"},{"internalType":"uint256","name":"y0","type":"uint256"},{"internalType":"uint256","name":"y1","type":"uint256"}]},{"internalType":"struct G1Point","name":"_proofOfPossession","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bool","name":"_moveWithLatestRollup","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"getGovernance","outputs":[{"internalType":"contract Governance","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLatestRollup","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLatestRollupAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"}],"stateMutability":"view","type":"function","name":"isRollupRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"stateMutability":"view","type":"function","name":"ownedPKs","outputs":[{"internalType":"bool","name":"isRegistered","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proofOfPossessionGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"contract IPayload","name":"_payload","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeWithLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract Governance","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGovernance"},{"inputs":[{"internalType":"uint64","name":"_proofOfPossessionGasLimit","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setProofOfPossessionGasLimit"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"vote"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"voteWithBonus"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addRollup(address)":{"details":"rollups only have access to the \"bonus instance\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.","params":{"_rollup":"- The address of the rollup to add"}},"constructor":{"params":{"__owner":"- The owner of the GSE. Initially a deployer to allow adding an initial rollup, then handed over to governance.","_activationThreshold":"- The amount of asset required to deposit an attester on the rollup.","_asset":"- The ERC20 token asset used in governance and for sybil resistance. This token is deposited by attesters to gain voting power in governance (ratio of voting power to staked amount is 1:1).","_ejectionThreshold":"- The minimum amount of asset required to be in the set to be considered an attester. If the balance falls below this threshold, the attester is ejected from the set."}},"delegate(address,address,address)":{"details":"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \"active\" in order to use it. See `Governance.getProposalState` for more details.","params":{"_attester":"- The address of the attester to delegate on behalf of","_delegatee":"- The delegatee that should receive the power","_instance":"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged."}},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"details":"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.","params":{"_attester":"- The attester address on behalf of which the deposit is made.","_moveWithLatestRollup":"- Whether to deposit into the specific instance, or the bonus instance","_proofOfPossession":"- A proof of possessions for the private key corresponding _publicKey in G1 and G2","_publicKeyInG1":"- BLS public key for the attester in G1","_publicKeyInG2":"- BLS public key for the attester in G2","_withdrawer":"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts."}},"finalizeWithdraw(uint256)":{"details":"Will be a no operation if the withdrawal is already collected.","params":{"_withdrawalId":"- The id of the withdrawal"}},"getLatestRollup()":{"returns":{"_0":"The address of the latest instance"}},"getLatestRollupAt(uint256)":{"params":{"_timestamp":"- The timestamp to lookup"},"returns":{"_0":"The address of the latest instance at the time of lookup"}},"isRegistered(address,address)":{"params":{"_attester":"- The attester to lookup","_instance":"- The instance to look at"},"returns":{"_0":"True if the `_attester` is in the set of `_instance`, false otherwise"}},"owner()":{"details":"Returns the address of the current owner."},"proposeWithLock(address,address)":{"details":"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.","params":{"_payload":"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.","_to":"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)"},"returns":{"_0":"The id of the proposal"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"vote(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on","_support":"- True if supporting the proposal, false otherwise."}},"voteWithBonus(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on"}},"withdraw(address,uint256)":{"details":"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \"what to do\" with the funds. And it must look at the returned amount withdrawn and the bool.","params":{"_amount":"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.","_attester":"- The attester to withdraw from."},"returns":{"_0":"The actual amount withdrawn.","_1":"True if attester is removed from set, false otherwise","_2":"The id of the withdrawal at the governance"}}},"version":1},"userdoc":{"kind":"user","methods":{"BONUS_INSTANCE_ADDRESS()":{"notice":"Create a special \"bonus\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \"instances\", and an \"instance\" is either the address of a \"true\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \"bonus\" address, which has its own accounting. NB: in every other context, \"instance\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \"rollup\" if we know we're talking about a rollup (often msg.sender), and \"instance\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \"bonus\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \"buckets\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \"effective\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \"affected instance\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc."},"addRollup(address)":{"notice":"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set"},"delegate(address,address,address)":{"notice":"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions."},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"notice":"Deposits a new attester"},"finalizeWithdraw(uint256)":{"notice":"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc."},"getLatestRollup()":{"notice":"Get the address of latest instance"},"getLatestRollupAt(uint256)":{"notice":"Get the address of the instance that was latest at time `_timestamp`"},"isRegistered(address,address)":{"notice":"Lookup if the `_attester` is in the `_instance` attester set"},"proposeWithLock(address,address)":{"notice":"Make a proposal to Governance via `Governance.proposeWithLock`"},"vote(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to `msg.sender`"},"voteWithBonus(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal."},"withdraw(address,uint256)":{"notice":"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn."}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/governance/GSE.sol":"GSECore"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b","urls":["bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca","dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f","urls":["bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167","dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"src/governance/Bn254LibWrapper.sol":{"keccak256":"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607","urls":["bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c","dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8"],"license":"Apache-2.0"},"src/governance/GSE.sol":{"keccak256":"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a","urls":["bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273","dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU"],"license":"Apache-2.0"},"src/governance/Governance.sol":{"keccak256":"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5","urls":["bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf","dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw"],"license":"Apache-2.0"},"src/governance/interfaces/IBn254LibWrapper.sol":{"keccak256":"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a","urls":["bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9","dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej"],"license":"Apache-2.0"},"src/governance/interfaces/IGovernance.sol":{"keccak256":"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005","urls":["bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff","dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa"],"license":"Apache-2.0"},"src/governance/interfaces/IPayload.sol":{"keccak256":"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3","urls":["bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c","dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin"],"license":"Apache-2.0"},"src/governance/libraries/AddressSnapshotLib.sol":{"keccak256":"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210","urls":["bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402","dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp"],"license":"Apache-2.0"},"src/governance/libraries/CheckpointedUintLib.sol":{"keccak256":"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4","urls":["bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1","dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q"],"license":"Apache-2.0"},"src/governance/libraries/ConfigurationLib.sol":{"keccak256":"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149","urls":["bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a","dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy"],"license":"Apache-2.0"},"src/governance/libraries/DepositDelegationLib.sol":{"keccak256":"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0","urls":["bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb","dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb"],"license":"Apache-2.0"},"src/governance/libraries/Errors.sol":{"keccak256":"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4","urls":["bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa","dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv"],"license":"Apache-2.0"},"src/governance/libraries/ProposalLib.sol":{"keccak256":"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90","urls":["bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192","dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Ballot.sol":{"keccak256":"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d","urls":["bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012","dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Configuration.sol":{"keccak256":"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9","urls":["bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482","dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Proposal.sol":{"keccak256":"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a","urls":["bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6","dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN"],"license":"Apache-2.0"},"src/shared/libraries/BN254Lib.sol":{"keccak256":"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5","urls":["bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a","dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52"],"license":"Apache-2.0"},"src/shared/libraries/CompressedTimeMath.sol":{"keccak256":"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1","urls":["bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3","dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB"],"license":"Apache-2.0"},"src/shared/libraries/TimeMath.sol":{"keccak256":"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f","urls":["bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914","dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3"],"license":"Apache-2.0"}},"version":1},"id":130}
|