diff --git a/abi/ERC20PermitHarness.json b/abi/ERC20PermitHarness.json new file mode 100644 index 00000000..9c4c5464 --- /dev/null +++ b/abi/ERC20PermitHarness.json @@ -0,0 +1,467 @@ +[ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "MalleableSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "ReusedNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "SignerMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroDecreaseAllowance", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroIncreaseAllowance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender_", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "allowance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedAmount_", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedAmount_", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender_", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/EmergencyGovernor.json b/abi/EmergencyGovernor.json new file mode 100644 index 00000000..c198918d --- /dev/null +++ b/abi/EmergencyGovernor.json @@ -0,0 +1,1268 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "standardGovernor_", + "type": "address" + }, + { + "internalType": "address", + "name": "zeroGovernor_", + "type": "address" + }, + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyVoted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "ExecutionFailed", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCallData", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCallDatasLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRegistrarAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidStandardGovernorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTarget", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTargetsLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidThresholdRatio", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidValue", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidValuesLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVoteTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroGovernorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "MalleableSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotSelf", + "type": "error" + }, + { + "inputs": [], + "name": "NotZeroGovernor", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalCannotBeExecuted", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state", + "type": "uint8" + } + ], + "name": "ProposalNotActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "ReusedNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "SignerMismatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "proposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "signatures", + "type": "string[]" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteStart", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteEnd", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "thresholdRatio", + "type": "uint16" + } + ], + "name": "ThresholdRatioSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "VoteCast", + "type": "event" + }, + { + "inputs": [], + "name": "BALLOTS_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOTS_WITH_REASON_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOT_WITH_REASON_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "clockMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "COUNTING_MODE", + "outputs": [ + { + "internalType": "string", + "name": "countingMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "accountToAdd_", + "type": "address" + }, + { + "internalType": "address", + "name": "accountToRemove_", + "type": "address" + } + ], + "name": "addAndRemoveFromList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "addToList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + } + ], + "name": "castVote", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVoteBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "castVoteWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "string", + "name": "reason_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVoteWithReasonBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + } + ], + "name": "castVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVotesBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "name": "castVotesWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "string[]", + "name": "reasons_", + "type": "string[]" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVotesWithReasonBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "clock_", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "getProposal", + "outputs": [ + { + "internalType": "uint16", + "name": "voteStart_", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "voteEnd_", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "executed_", + "type": "bool" + }, + { + "internalType": "enum IGovernor.ProposalState", + "name": "state_", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "noVotes_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yesVotes_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "proposer_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timepoint_", + "type": "uint256" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "hasVoted", + "outputs": [ + { + "internalType": "bool", + "name": "hasVoted_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "callData_", + "type": "bytes" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalDeadline", + "outputs": [ + { + "internalType": "uint256", + "name": "deadline_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proposalFee", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalFee_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalProposer", + "outputs": [ + { + "internalType": "address", + "name": "proposer_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "snapshot_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values_", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "string", + "name": "description_", + "type": "string" + } + ], + "name": "propose", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timepoint_", + "type": "uint256" + } + ], + "name": "quorum", + "outputs": [ + { + "internalType": "uint256", + "name": "quorum_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "removeFromList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newProposalFee_", + "type": "uint256" + } + ], + "name": "setStandardProposalFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newThresholdRatio_", + "type": "uint16" + } + ], + "name": "setThresholdRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "standardGovernor", + "outputs": [ + { + "internalType": "address", + "name": "standardGovernor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "state", + "outputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state_", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "thresholdRatio", + "outputs": [ + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "value_", + "type": "bytes32" + } + ], + "name": "updateConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "voteToken", + "outputs": [ + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "votingDelay_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "votingPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPeriod_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "zeroGovernor", + "outputs": [ + { + "internalType": "address", + "name": "zeroGovernor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/EmergencyGovernorDeployer.json b/abi/EmergencyGovernorDeployer.json new file mode 100644 index 00000000..d2887a38 --- /dev/null +++ b/abi/EmergencyGovernorDeployer.json @@ -0,0 +1,114 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address", + "name": "zeroGovernor_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CallerIsNotRegistrar", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRegistrarAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroGovernorAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "standardGovernor_", + "type": "address" + }, + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "deployed_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getNextDeploy", + "outputs": [ + { + "internalType": "address", + "name": "nextDeploy_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "zeroGovernor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/PowerBootstrapToken.json b/abi/PowerBootstrapToken.json new file mode 100644 index 00000000..a1802d79 --- /dev/null +++ b/abi/PowerBootstrapToken.json @@ -0,0 +1,77 @@ +[ + { + "inputs": [ + { + "internalType": "address[]", + "name": "initialAccounts_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "initialBalances_", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "accountsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balancesLength", + "type": "uint256" + } + ], + "name": "LengthMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "internalType": "uint256", + "name": "balance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "totalSupply_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/PowerToken.json b/abi/PowerToken.json new file mode 100644 index 00000000..6a0422b0 --- /dev/null +++ b/abi/PowerToken.json @@ -0,0 +1,1175 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "governor_", + "type": "address" + }, + { + "internalType": "address", + "name": "cashToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "vault_", + "type": "address" + }, + { + "internalType": "address", + "name": "bootstrapToken_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "AlreadyDelegated", + "type": "error" + }, + { + "inputs": [], + "name": "AlreadyParticipated", + "type": "error" + }, + { + "inputs": [], + "name": "AmountExceedsUint240", + "type": "error" + }, + { + "inputs": [], + "name": "EpochAlreadyActive", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientAuctionSupply", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCashTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEpochOrdering", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVaultAddress", + "type": "error" + }, + { + "inputs": [], + "name": "MalleableSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotGovernor", + "type": "error" + }, + { + "inputs": [], + "name": "NotVoteEpoch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "ReusedNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "SignerMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "TransferFromFailed", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToSelf", + "type": "error" + }, + { + "inputs": [], + "name": "VoteEpoch", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroDecreaseAllowance", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroGovernorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroIncreaseAllowance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "cost", + "type": "uint256" + } + ], + "name": "Buy", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newBalance", + "type": "uint256" + } + ], + "name": "DelegateVotesChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + } + ], + "name": "EpochMarkedActive", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "clockMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "DELEGATION_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIAL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "activeEpochs", + "outputs": [ + { + "internalType": "uint256", + "name": "activeEpochs_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender_", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "allowance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amountToAuction", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToAuction_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "internalType": "uint256", + "name": "balance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "epochs_", + "type": "uint256[]" + } + ], + "name": "balancesOfAt", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "startEpoch_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endEpoch_", + "type": "uint256" + } + ], + "name": "balancesOfBetween", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bootstrapEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "bootstrapEpoch_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bootstrapToken", + "outputs": [ + { + "internalType": "address", + "name": "bootstrapToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination_", + "type": "address" + } + ], + "name": "buy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cashToken", + "outputs": [ + { + "internalType": "address", + "name": "cashToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "clock_", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedAmount_", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "delegateBySig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "delegatesAt", + "outputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "getCost", + "outputs": [ + { + "internalType": "uint256", + "name": "cost_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "getPastVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPower_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPower_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governor", + "outputs": [ + { + "internalType": "address", + "name": "governor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "hasParticipatedAt", + "outputs": [ + { + "internalType": "bool", + "name": "participated_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedAmount_", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "isActiveEpoch", + "outputs": [ + { + "internalType": "bool", + "name": "isActiveEpoch_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "markEpochActive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "name": "markParticipation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "participationInflation", + "outputs": [ + { + "internalType": "uint256", + "name": "participationInflation_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nextCashToken_", + "type": "address" + } + ], + "name": "setNextCashToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "epochs_", + "type": "uint256[]" + } + ], + "name": "totalSuppliesAt", + "outputs": [ + { + "internalType": "uint256[]", + "name": "totalSupplies_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "startEpoch_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endEpoch_", + "type": "uint256" + } + ], + "name": "totalSuppliesBetween", + "outputs": [ + { + "internalType": "uint256[]", + "name": "totalSupplies_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "totalSupply_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "totalSupply_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender_", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "vault_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/PowerTokenDeployer.json b/abi/PowerTokenDeployer.json new file mode 100644 index 00000000..8b906d75 --- /dev/null +++ b/abi/PowerTokenDeployer.json @@ -0,0 +1,114 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address", + "name": "vault_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CallerIsNotRegistrar", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRegistrarAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVaultAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "governor_", + "type": "address" + }, + { + "internalType": "address", + "name": "cashToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "bootstrapToken_", + "type": "address" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "deployed_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getNextDeploy", + "outputs": [ + { + "internalType": "address", + "name": "nextDeploy_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/Registrar.json b/abi/Registrar.json new file mode 100644 index 00000000..589c0469 --- /dev/null +++ b/abi/Registrar.json @@ -0,0 +1,465 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "standardGovernorDeployer_", + "type": "address" + }, + { + "internalType": "address", + "name": "emergencyGovernorDeployer_", + "type": "address" + }, + { + "internalType": "address", + "name": "powerTokenDeployer_", + "type": "address" + }, + { + "internalType": "address", + "name": "bootstrapToken_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "standardProposalFee_", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "emergencyProposalThresholdRatio_", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CallerIsNotStandardOrEmergencyGovernor", + "type": "error" + }, + { + "inputs": [], + "name": "CallerIsNotZeroGovernor", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEmergencyGovernorDeployerAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPowerTokenDeployerAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidStandardGovernorDeployerAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroGovernorAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "address", + "name": "deployed", + "type": "address" + } + ], + "name": "UnexpectedPowerTokenDeployed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "address", + "name": "deployed", + "type": "address" + } + ], + "name": "UnexpectedStandardGovernorDeployed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "list", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressAddedToList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "list", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressRemovedFromList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "value", + "type": "bytes32" + } + ], + "name": "ConfigUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "standardGovernor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "emergencyGovernor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "powerToken", + "type": "address" + } + ], + "name": "EphemeralContractsDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bootstrapToken", + "type": "address" + } + ], + "name": "ResetExecuted", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "addToList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyGovernor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyGovernorDeployer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key_", + "type": "bytes32" + } + ], + "name": "get", + "outputs": [ + { + "internalType": "bytes32", + "name": "value_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "keys_", + "type": "bytes32[]" + } + ], + "name": "get", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "values_", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "accounts_", + "type": "address[]" + } + ], + "name": "listContains", + "outputs": [ + { + "internalType": "bool", + "name": "contains_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "listContains", + "outputs": [ + { + "internalType": "bool", + "name": "contains_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "powerToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "powerTokenDeployer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "removeFromList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bootstrapToken_", + "type": "address" + } + ], + "name": "reset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "standardGovernor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "standardGovernorDeployer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "value_", + "type": "bytes32" + } + ], + "name": "updateConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "zeroGovernor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "zeroToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/StandardGovernor.json b/abi/StandardGovernor.json new file mode 100644 index 00000000..5bede638 --- /dev/null +++ b/abi/StandardGovernor.json @@ -0,0 +1,1483 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "emergencyGovernor_", + "type": "address" + }, + { + "internalType": "address", + "name": "zeroGovernor_", + "type": "address" + }, + { + "internalType": "address", + "name": "zeroToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "cashToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "vault_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "proposalFee_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxTotalZeroRewardPerActiveEpoch_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyVoted", + "type": "error" + }, + { + "inputs": [], + "name": "EpochHasNoProposals", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "ExecutionFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state", + "type": "uint8" + } + ], + "name": "FeeNotDestinedForVault", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCallData", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCallDatasLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCashTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEmergencyGovernorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRegistrarAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTarget", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTargetsLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidValue", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidValuesLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVaultAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVoteTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroGovernorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "MalleableSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotSelf", + "type": "error" + }, + { + "inputs": [], + "name": "NotSelfOrEmergencyGovernor", + "type": "error" + }, + { + "inputs": [], + "name": "NotZeroGovernor", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalCannotBeExecuted", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state", + "type": "uint8" + } + ], + "name": "ProposalNotActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "ReusedNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "SignerMismatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "cashToken", + "type": "address" + } + ], + "name": "CashTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "proposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "signatures", + "type": "string[]" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteStart", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteEnd", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "cashToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalFee", + "type": "uint256" + } + ], + "name": "ProposalFeeSentToVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalFee", + "type": "uint256" + } + ], + "name": "ProposalFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "VoteCast", + "type": "event" + }, + { + "inputs": [], + "name": "BALLOTS_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOTS_WITH_REASON_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOT_WITH_REASON_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "clockMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "COUNTING_MODE", + "outputs": [ + { + "internalType": "string", + "name": "countingMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "accountToAdd_", + "type": "address" + }, + { + "internalType": "address", + "name": "accountToRemove_", + "type": "address" + } + ], + "name": "addAndRemoveFromList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "addToList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cashToken", + "outputs": [ + { + "internalType": "address", + "name": "cashToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + } + ], + "name": "castVote", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVoteBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "castVoteWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "string", + "name": "reason_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVoteWithReasonBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + } + ], + "name": "castVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVotesBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "name": "castVotesWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "string[]", + "name": "reasons_", + "type": "string[]" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVotesWithReasonBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "clock_", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyGovernor", + "outputs": [ + { + "internalType": "address", + "name": "emergencyGovernor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "getProposal", + "outputs": [ + { + "internalType": "uint16", + "name": "voteStart_", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "voteEnd_", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "executed_", + "type": "bool" + }, + { + "internalType": "enum IGovernor.ProposalState", + "name": "state_", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "noVotes_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yesVotes_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "proposer_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timepoint_", + "type": "uint256" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "hasVoted", + "outputs": [ + { + "internalType": "bool", + "name": "hasVoted_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "voter_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "hasVotedOnAllProposals", + "outputs": [ + { + "internalType": "bool", + "name": "hasVoted_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "callData_", + "type": "bytes" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "markEpochActive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxTotalZeroRewardPerActiveEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "reward_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "numberOfProposalsAt", + "outputs": [ + { + "internalType": "uint256", + "name": "count_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "voter_", + "type": "address" + } + ], + "name": "numberOfProposalsVotedOnAt", + "outputs": [ + { + "internalType": "uint256", + "name": "count_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalDeadline", + "outputs": [ + { + "internalType": "uint256", + "name": "deadline_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proposalFee", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalFee_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalProposer", + "outputs": [ + { + "internalType": "address", + "name": "proposer_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "snapshot_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values_", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "string", + "name": "description_", + "type": "string" + } + ], + "name": "propose", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "quorum", + "outputs": [ + { + "internalType": "uint256", + "name": "quorum_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "list_", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "removeFromList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "sendProposalFeeToVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newCashToken_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newProposalFee_", + "type": "uint256" + } + ], + "name": "setCashToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newProposalFee_", + "type": "uint256" + } + ], + "name": "setProposalFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "state", + "outputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state_", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "value_", + "type": "bytes32" + } + ], + "name": "updateConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "vault_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "voteToken", + "outputs": [ + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "votingDelay_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPeriod_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "zeroGovernor", + "outputs": [ + { + "internalType": "address", + "name": "zeroGovernor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "zeroToken", + "outputs": [ + { + "internalType": "address", + "name": "zeroToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/StandardGovernorDeployer.json b/abi/StandardGovernorDeployer.json new file mode 100644 index 00000000..3f9ea713 --- /dev/null +++ b/abi/StandardGovernorDeployer.json @@ -0,0 +1,170 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address", + "name": "vault_", + "type": "address" + }, + { + "internalType": "address", + "name": "zeroGovernor_", + "type": "address" + }, + { + "internalType": "address", + "name": "zeroToken_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CallerIsNotRegistrar", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRegistrarAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVaultAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroGovernorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidZeroTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "emergencyGovernor_", + "type": "address" + }, + { + "internalType": "address", + "name": "cashToken_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "proposalFee_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxTotalZeroRewardPerActiveEpoch_", + "type": "uint256" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "deployed_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getNextDeploy", + "outputs": [ + { + "internalType": "address", + "name": "nextDeploy_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "zeroGovernor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "zeroToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/ZeroGovernor.json b/abi/ZeroGovernor.json new file mode 100644 index 00000000..adf28430 --- /dev/null +++ b/abi/ZeroGovernor.json @@ -0,0 +1,1250 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "allowedCashTokens_", + "type": "address[]" + }, + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyVoted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "ExecutionFailed", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCallData", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCallDatasLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCashToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCashTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRegistrarAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTarget", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTargetsLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidThresholdRatio", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidValue", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidValuesLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidVoteTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "MalleableSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NoAllowedCashTokens", + "type": "error" + }, + { + "inputs": [], + "name": "NotSelf", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalCannotBeExecuted", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state", + "type": "uint8" + } + ], + "name": "ProposalNotActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "ReusedNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "SignerMismatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "proposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "signatures", + "type": "string[]" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "calldatas", + "type": "bytes[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteStart", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "voteEnd", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "thresholdRatio", + "type": "uint16" + } + ], + "name": "ThresholdRatioSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "support", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weight", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "VoteCast", + "type": "event" + }, + { + "inputs": [], + "name": "BALLOTS_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOTS_WITH_REASON_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BALLOT_WITH_REASON_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "clockMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "COUNTING_MODE", + "outputs": [ + { + "internalType": "string", + "name": "countingMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + } + ], + "name": "castVote", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVoteBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "castVoteWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "support_", + "type": "uint8" + }, + { + "internalType": "string", + "name": "reason_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVoteWithReasonBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + } + ], + "name": "castVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVotesBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "name": "castVotesWithReason", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proposalIds_", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "supports_", + "type": "uint8[]" + }, + { + "internalType": "string[]", + "name": "reasons_", + "type": "string[]" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "castVotesWithReasonBySig", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "clock_", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyGovernor", + "outputs": [ + { + "internalType": "address", + "name": "emergencyGovernor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "getProposal", + "outputs": [ + { + "internalType": "uint16", + "name": "voteStart_", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "voteEnd_", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "executed_", + "type": "bool" + }, + { + "internalType": "enum IGovernor.ProposalState", + "name": "state_", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "noVotes_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yesVotes_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "proposer_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timepoint_", + "type": "uint256" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "weight_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "hasVoted", + "outputs": [ + { + "internalType": "bool", + "name": "hasVoted_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "callData_", + "type": "bytes" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "hashProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "isAllowedCashToken", + "outputs": [ + { + "internalType": "bool", + "name": "isAllowed_", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalDeadline", + "outputs": [ + { + "internalType": "uint256", + "name": "deadline_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proposalFee", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalFee_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalProposer", + "outputs": [ + { + "internalType": "address", + "name": "proposer_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "proposalSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "snapshot_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values_", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "callDatas_", + "type": "bytes[]" + }, + { + "internalType": "string", + "name": "description_", + "type": "string" + } + ], + "name": "propose", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timepoint_", + "type": "uint256" + } + ], + "name": "quorum", + "outputs": [ + { + "internalType": "uint256", + "name": "quorum_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "resetToPowerHolders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "resetToZeroHolders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newCashToken_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newProposalFee_", + "type": "uint256" + } + ], + "name": "setCashToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newThresholdRatio_", + "type": "uint16" + } + ], + "name": "setEmergencyProposalThresholdRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newThresholdRatio_", + "type": "uint16" + } + ], + "name": "setZeroProposalThresholdRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "standardGovernor", + "outputs": [ + { + "internalType": "address", + "name": "standardGovernor_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "startingCashToken", + "outputs": [ + { + "internalType": "address", + "name": "startingCashToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId_", + "type": "uint256" + } + ], + "name": "state", + "outputs": [ + { + "internalType": "enum IGovernor.ProposalState", + "name": "state_", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "thresholdRatio", + "outputs": [ + { + "internalType": "uint16", + "name": "thresholdRatio_", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "voteToken", + "outputs": [ + { + "internalType": "address", + "name": "voteToken_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "votingDelay_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "votingPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPeriod_", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/ZeroToken.json b/abi/ZeroToken.json new file mode 100644 index 00000000..79d9bbaa --- /dev/null +++ b/abi/ZeroToken.json @@ -0,0 +1,886 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "initialAccounts_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "initialBalances_", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyDelegated", + "type": "error" + }, + { + "inputs": [], + "name": "AmountExceedsUint240", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEpochOrdering", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "length2", + "type": "uint256" + } + ], + "name": "LengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "MalleableSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotGovernor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "ReusedNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "SignerMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToSelf", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroDecreaseAllowance", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroIncreaseAllowance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newBalance", + "type": "uint256" + } + ], + "name": "DelegateVotesChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "CLOCK_MODE", + "outputs": [ + { + "internalType": "string", + "name": "clockMode_", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "DELEGATION_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator_", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender_", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "allowance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "internalType": "uint256", + "name": "balance_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "epochs_", + "type": "uint256[]" + } + ], + "name": "balancesOfAt", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "startEpoch_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endEpoch_", + "type": "uint256" + } + ], + "name": "balancesOfBetween", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clock", + "outputs": [ + { + "internalType": "uint48", + "name": "clock_", + "type": "uint48" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedAmount_", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "delegateBySig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "delegatesAt", + "outputs": [ + { + "internalType": "address", + "name": "delegatee_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "getPastVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPower_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "votingPower_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedAmount_", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account_", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline_", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v_", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s_", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "registrar", + "outputs": [ + { + "internalType": "address", + "name": "registrar_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "epochs_", + "type": "uint256[]" + } + ], + "name": "totalSuppliesAt", + "outputs": [ + { + "internalType": "uint256[]", + "name": "totalSupplies_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "startEpoch_", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endEpoch_", + "type": "uint256" + } + ], + "name": "totalSuppliesBetween", + "outputs": [ + { + "internalType": "uint256[]", + "name": "totalSupplies_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "totalSupply_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epoch_", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "totalSupply_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender_", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "success_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/build.sh b/build.sh index b89b17a1..79e93f32 100755 --- a/build.sh +++ b/build.sh @@ -16,15 +16,18 @@ echo Using profile: $FOUNDRY_PROFILE if [ "$sizes" = false ]; then - forge build --skip '*/test/**/*.sol' --skip '*/script/**' --skip '*/lib/forge-std/**' --extra-output-files abi; + forge build --skip '*/test/**/*.t.sol' --skip '*/script/**' --skip '*/lib/forge-std/**' --extra-output-files abi; else - forge build --skip '*/test/**/*.sol' --skip '*/script/**' --skip '*/lib/forge-std/**' --extra-output-files abi --sizes; + forge build --skip '*/test/**/*.t.sol' --skip '*/script/**' --skip '*/lib/forge-std/**' --extra-output-files abi --sizes; fi mkdir -p abi -cp ./out/DualGovernor.sol/DualGovernor.abi.json ./abi/DualGovernor.json -cp ./out/DualGovernorDeployer.sol/DualGovernorDeployer.abi.json ./abi/DualGovernorDeployer.json +cp ./out/EmergencyGovernor.sol/EmergencyGovernor.abi.json ./abi/EmergencyGovernor.json +cp ./out/EmergencyGovernorDeployer.sol/EmergencyGovernorDeployer.abi.json ./abi/EmergencyGovernorDeployer.json +cp ./out/StandardGovernor.sol/StandardGovernor.abi.json ./abi/StandardGovernor.json +cp ./out/StandardGovernorDeployer.sol/StandardGovernorDeployer.abi.json ./abi/StandardGovernorDeployer.json +cp ./out/ZeroGovernor.sol/ZeroGovernor.abi.json ./abi/ZeroGovernor.json cp ./out/PowerBootstrapToken.sol/PowerBootstrapToken.abi.json ./abi/PowerBootstrapToken.json cp ./out/PowerToken.sol/PowerToken.abi.json ./abi/PowerToken.json cp ./out/PowerTokenDeployer.sol/PowerTokenDeployer.abi.json ./abi/PowerTokenDeployer.json @@ -34,8 +37,11 @@ cp ./out/ERC20PermitHarness.sol/ERC20PermitHarness.abi.json ./abi/ERC20PermitHar mkdir -p bytecode -DualGovernorBytecode=$(jq '.bytecode.object' ./out/DualGovernor.sol/DualGovernor.json) -DualGovernorDeployerBytecode=$(jq '.bytecode.object' ./out/DualGovernorDeployer.sol/DualGovernorDeployer.json) +EmergencyGovernorBytecode=$(jq '.bytecode.object' ./out/EmergencyGovernor.sol/EmergencyGovernor.json) +EmergencyGovernorDeployerBytecode=$(jq '.bytecode.object' ./out/EmergencyGovernorDeployer.sol/EmergencyGovernorDeployer.json) +StandardGovernorBytecode=$(jq '.bytecode.object' ./out/StandardGovernor.sol/StandardGovernor.json) +StandardGovernorDeployerBytecode=$(jq '.bytecode.object' ./out/StandardGovernorDeployer.sol/StandardGovernorDeployer.json) +ZeroGovernorBytecode=$(jq '.bytecode.object' ./out/ZeroGovernor.sol/ZeroGovernor.json) PowerBootstrapTokenBytecode=$(jq '.bytecode.object' ./out/PowerBootstrapToken.sol/PowerBootstrapToken.json) PowerTokenBytecode=$(jq '.bytecode.object' ./out/PowerToken.sol/PowerToken.json) PowerTokenDeployerBytecode=$(jq '.bytecode.object' ./out/PowerTokenDeployer.sol/PowerTokenDeployer.json) @@ -43,8 +49,11 @@ RegistrarBytecode=$(jq '.bytecode.object' ./out/Registrar.sol/Registrar.json) ZeroTokenBytecode=$(jq '.bytecode.object' ./out/ZeroToken.sol/ZeroToken.json) ERC20PermitHarnessBytecode=$(jq '.bytecode.object' ./out/ERC20PermitHarness.sol/ERC20PermitHarness.json) -echo "{ \"bytecode\": ${DualGovernorBytecode} }" > ./bytecode/DualGovernor.json -echo "{ \"bytecode\": ${DualGovernorDeployerBytecode} }" > ./bytecode/DualGovernorDeployer.json +echo "{ \"bytecode\": ${EmergencyGovernorBytecode} }" > ./bytecode/EmergencyGovernor.json +echo "{ \"bytecode\": ${EmergencyGovernorDeployerBytecode} }" > ./bytecode/EmergencyGovernorDeployer.json +echo "{ \"bytecode\": ${StandardGovernorBytecode} }" > ./bytecode/StandardGovernor.json +echo "{ \"bytecode\": ${StandardGovernorDeployerBytecode} }" > ./bytecode/StandardGovernorDeployer.json +echo "{ \"bytecode\": ${ZeroGovernorBytecode} }" > ./bytecode/ZeroGovernor.json echo "{ \"bytecode\": ${PowerBootstrapTokenBytecode} }" > ./bytecode/PowerBootstrapToken.json echo "{ \"bytecode\": ${PowerTokenBytecode} }" > ./bytecode/PowerToken.json echo "{ \"bytecode\": ${PowerTokenDeployerBytecode} }" > ./bytecode/PowerTokenDeployer.json diff --git a/bytecode/ERC20PermitHarness.json b/bytecode/ERC20PermitHarness.json new file mode 100644 index 00000000..110aad00 --- /dev/null +++ b/bytecode/ERC20PermitHarness.json @@ -0,0 +1 @@ +{ "bytecode": "0x60c060405234801562000010575f80fd5b5060405162001101380380620011018339810160408190526200003391620001bc565b828282827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f620000658382620002b6565b6040516200007491906200037e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506002620000eb8382620002b6565b5060ff1660a05250620003f89350505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000122575f80fd5b81516001600160401b03808211156200013f576200013f620000fe565b604051601f8301601f19908116603f011681019082821181831017156200016a576200016a620000fe565b8160405283815260209250868385880101111562000186575f80fd5b5f91505b83821015620001a957858201830151818301840152908201906200018a565b5f93810190920192909252949350505050565b5f805f60608486031215620001cf575f80fd5b83516001600160401b0380821115620001e6575f80fd5b620001f48783880162000112565b945060208601519150808211156200020a575f80fd5b50620002198682870162000112565b925050604084015190509250925092565b600181811c908216806200023f57607f821691505b6020821081036200025e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002b1575f81815260208120601f850160051c810160208610156200028c5750805b601f850160051c820191505b81811015620002ad5782815560010162000298565b5050505b505050565b81516001600160401b03811115620002d257620002d2620000fe565b620002ea81620002e384546200022a565b8462000264565b602080601f83116001811462000320575f8415620003085750858301515b5f19600386901b1c1916600185901b178555620002ad565b5f85815260208120601f198616915b8281101562000350578886015182559484019460019091019084016200032f565b50858210156200036e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8083546200038d816200022a565b60018281168015620003a85760018114620003be57620003ec565b60ff1984168752821515830287019450620003ec565b875f526020805f205f5b85811015620003e35781548a820152908401908201620003c8565b50505082870194505b50929695505050505050565b60805160a051610ce0620004215f395f61019801525f81816101c401526108810152610ce05ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806340c10f1911610093578063a457c2d711610063578063a457c2d71461026c578063a9059cbb1461027f578063d505accf14610292578063dd62ed3e146102a5575f80fd5b806340c10f19146101fb57806370a08231146102105780637ecebe001461022f57806395d89b4114610264575f80fd5b806330adf81f116100ce57806330adf81f1461016a578063313ce567146101915780633644e515146101c257806339509351146101e8575f80fd5b806306fdde03146100ff578063095ea7b31461011d57806318160ddd1461014057806323b872dd14610157575b5f80fd5b6101076102ea565b6040516101149190610a56565b60405180910390f35b61013061012b366004610ae7565b610379565b6040519015158152602001610114565b61014960045481565b604051908152602001610114565b610130610165366004610b0f565b61038f565b6101497f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610114565b7f0000000000000000000000000000000000000000000000000000000000000000610149565b6101306101f6366004610ae7565b6103b0565b61020e610209366004610ae7565b610431565b005b61014961021e366004610b48565b60056020525f908152604090205481565b61014961023d366004610b48565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b6101076104d3565b61013061027a366004610ae7565b6104e2565b61013061028d366004610ae7565b6104ee565b61020e6102a0366004610b68565b6104fa565b6101496102b3366004610bd5565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260036020908152604080832093909416825291909152205490565b60605f80546102f890610c06565b80601f016020809104026020016040519081016040528092919081815260200182805461032490610c06565b801561036f5780601f106103465761010080835404028352916020019161036f565b820191905f5260205f20905b81548152906001019060200180831161035257829003601f168201915b5050505050905090565b5f61038533848461060c565b5060015b92915050565b5f61039b84338461067a565b6103a6848484610708565b5060019392505050565b5f815f036103ea576040517f817e74f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529020546103859190859061042c908690610c84565b61060c565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526005602052604081208054839290610465908490610c84565b925050819055508060045f82825461047d9190610c84565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6060600280546102f890610c06565b5f61038533848461067a565b5f610385338484610708565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600160205260408120549061052d898989858a6107db565b90505f61053d82888888886108d2565b90508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146105c9576040517fefe0e68600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808c166004830152821660248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8a165f90815260016020819052604090912090840190556106008a8a8a61060c565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b805f036106b3576040517f28bd1f0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084165f90815260036020908152604080832093861683529290522054600181016106f35750505050565b610702848461042c8585610c97565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600560205260408120805483929061073c908490610c97565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526005602052604081208054839290610775908490610c84565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161066d91815260200190565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208083019190915273ffffffffffffffffffffffffffffffffffffffff88811683850152871660608301526080820186905260a0820185905260c08083018590528351808403909101815260e0830184528051908201207f19010000000000000000000000000000000000000000000000000000000000006101008401527f0000000000000000000000000000000000000000000000000000000000000000610102840152610122808401919091528351808403909101815261014290920190925280519101205b95945050505050565b5f84421115610916576040517ff88f0490000000000000000000000000000000000000000000000000000000008152600481018690524260248201526044016105c0565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082118061095757508360ff16601b1415801561095757508360ff16601c14155b1561098e576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156109de573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166108c9576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6020808352835180828501525f5b81811015610a8157858101830151858201604001528201610a65565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ae2575f80fd5b919050565b5f8060408385031215610af8575f80fd5b610b0183610abf565b946020939093013593505050565b5f805f60608486031215610b21575f80fd5b610b2a84610abf565b9250610b3860208501610abf565b9150604084013590509250925092565b5f60208284031215610b58575f80fd5b610b6182610abf565b9392505050565b5f805f805f805f60e0888a031215610b7e575f80fd5b610b8788610abf565b9650610b9560208901610abf565b95506040880135945060608801359350608088013560ff81168114610bb8575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610be6575f80fd5b610bef83610abf565b9150610bfd60208401610abf565b90509250929050565b600181811c90821680610c1a57607f821691505b602082108103610c51577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561038957610389610c57565b8181038181111561038957610389610c5756fea264697066735822122002a96ae467c18dcfcffd812a6f2fb8a3f5cfdd0a300f56a960d1e527f6435cfb64736f6c63430008150033" } diff --git a/bytecode/EmergencyGovernor.json b/bytecode/EmergencyGovernor.json new file mode 100644 index 00000000..df3e7079 --- /dev/null +++ b/bytecode/EmergencyGovernor.json @@ -0,0 +1 @@ +{ "bytecode": "0x61012060405234801562000011575f80fd5b50604051620038a5380380620038a583398101604081905262000034916200026f565b60408051808201909152601181527022b6b2b933b2b731bca3b7bb32b93737b960791b6020820152858583838383827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f62000091838262000384565b604051620000a091906200044c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506001600160a01b03821660a0819052620001365760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660c081905262000163576040516316d3e4a360e01b815260040160405180910390fd5b5050506200017781620001e160201b60201c565b505050506001600160a01b03831660e0819052620001a857604051637301473d60e11b815260040160405180910390fd5b6001600160a01b038216610100819052620001d65760405163dfac64ef60e01b815260040160405180910390fd5b5050505050620004c6565b6127108161ffff1611156200020957604051632d94b10f60e11b815260040160405180910390fd5b6004805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b03811681146200026a575f80fd5b919050565b5f805f805f60a0868803121562000284575f80fd5b6200028f8662000253565b94506200029f6020870162000253565b9350620002af6040870162000253565b9250620002bf6060870162000253565b9150608086015161ffff81168114620002d6575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200030d57607f821691505b6020821081036200032c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200037f575f81815260208120601f850160051c810160208610156200035a5750805b601f850160051c820191505b818110156200037b5782815560010162000366565b5050505b505050565b81516001600160401b03811115620003a057620003a0620002e4565b620003b881620003b18454620002f8565b8462000332565b602080601f831160018114620003ee575f8415620003d65750858301515b5f19600386901b1c1916600185901b1785556200037b565b5f85815260208120601f198616915b828110156200041e57888601518255948401946001909101908401620003fd565b50858210156200043c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8083546200045b81620002f8565b600182811680156200047657600181146200048c57620004ba565b60ff1984168752821515830287019450620004ba565b875f526020805f205f5b85811015620004b15781548a82015290840190820162000496565b50505082870194505b50929695505050505050565b60805160a05160c05160e051610100516133696200053c5f395f81816106ac01526119a601525f818161055e0152610e9701525f81816103a60152818161105301526115a501525f818161040a01528181610d6301528181611b330152611bed01525f818161045b01526112d301526133695ff3fe6080604052600436106102e2575f3560e01c80638968eb0711610186578063c2ee3a08116100dc578063dd4e2ba511610087578063efefad0c11610062578063efefad0c1461093e578063f046c6461461095d578063f8ce560a14610990575f80fd5b8063dd4e2ba5146108d9578063deaaa7cc146108ec578063eb9019d41461091f575f80fd5b8063cee87708116100b7578063cee8770814610868578063d11d19c214610887578063d48d8423146108ba575f80fd5b8063c2ee3a0814610801578063c59057e414610816578063c7f758a814610835575f80fd5b80639b9e9cf81161013c578063c01f9e3711610117578063c01f9e37146107aa578063c0324da1146107df578063c27cabb51461047f575f80fd5b80639b9e9cf81461074d578063b4d87a121461076c578063b57751251461078b575f80fd5b80638e9d8c341161016c5780638e9d8c34146106d057806391ddadf41461070357806394eac9951461072e575f80fd5b80638968eb071461067f5780638df3227f1461069e575f80fd5b80633e4f49e61161023b57806356781388116101f15780637d5e81e2116101cc5780637d5e81e2146105fe5780637ecebe001461061d578063889eba3b1461065e575f80fd5b806356781388146105a157806364a38bf9146105c05780637b3c71d3146105df575f80fd5b80634bf5d7e9116102215780634bf5d7e91461050b5780634d6d7441146105505780634d8e082514610582575f80fd5b80633e4f49e6146104b057806343859632146104dc575f80fd5b80632656227d1161029b5780633644e515116102765780633644e5151461044d5780633932abb11461047f5780633bccf4fd14610491575f80fd5b80632656227d146103e95780632b20e397146103fc5780632d63f6931461042e575f80fd5b8063143489d0116102cb578063143489d014610329578063160d66ae1461039857806324b2c7b3146103ca575f80fd5b806302a251a3146102e657806306fdde0314610308575b5f80fd5b3480156102f1575f80fd5b5060025b6040519081526020015b60405180910390f35b348015610313575f80fd5b5061031c6109af565b6040516102ff9190612358565b348015610334575f80fd5b5061037361034336600461236a565b5f9081526002602052604090205465010000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ff565b3480156103a3575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b3480156103d5575f80fd5b506102f56103e43660046123c9565b610a3e565b6102f56103f73660046126ec565b610a57565b348015610407575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b348015610439575f80fd5b506102f561044836600461236a565b610ad5565b348015610458575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006102f5565b34801561048a575f80fd5b505f6102f5565b34801561049c575f80fd5b506102f56104ab366004612786565b610afd565b3480156104bb575f80fd5b506104cf6104ca36600461236a565b610b28565b6040516102ff9190612836565b3480156104e7575f80fd5b506104fb6104f6366004612844565b610c94565b60405190151581526020016102ff565b348015610516575f80fd5b5060408051808201909152600a81527f6d6f64653d65706f636800000000000000000000000000000000000000000000602082015261031c565b34801561055b575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b34801561058d575f80fd5b506102f561059c36600461286e565b610ccd565b3480156105ac575f80fd5b506102f56105bb3660046128a8565b610cd7565b3480156105cb575f80fd5b506102f56105da3660046128c9565b610ceb565b3480156105ea575f80fd5b506102f56105f936600461296e565b610d02565b348015610609575f80fd5b506102f56106183660046129b8565b610d18565b348015610628575f80fd5b506102f5610637366004612a71565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610669575f80fd5b5061067d610678366004612a8a565b610d25565b005b34801561068a575f80fd5b506102f5610699366004612aaa565b610dd4565b3480156106a9575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b3480156106db575f80fd5b506102f57f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff81565b34801561070e575f80fd5b50610717610dfc565b60405165ffffffffffff90911681526020016102ff565b348015610739575f80fd5b5061067d610748366004612b37565b610e0a565b348015610758575f80fd5b506102f5610767366004612b58565b610e1e565b348015610777575f80fd5b5061067d610786366004612844565b610e4a565b348015610796575f80fd5b5061067d6107a536600461236a565b610e60565b3480156107b5575f80fd5b506102f56107c436600461236a565b5f9081526002602052604090205462010000900461ffff1690565b3480156107ea575f80fd5b5060045460405161ffff90911681526020016102ff565b34801561080c575f80fd5b506102f561271081565b348015610821575f80fd5b506102f56108303660046126ec565b610f06565b348015610840575f80fd5b5061085461084f36600461236a565b610f29565b6040516102ff989796959493929190612c0c565b348015610873575f80fd5b506102f5610882366004612c74565b610fcc565b348015610892575f80fd5b506102f57f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f81565b3480156108c5575f80fd5b5061067d6108d4366004612844565b610ff3565b3480156108e4575f80fd5b50606061031c565b3480156108f7575f80fd5b506102f57f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b34801561092a575f80fd5b506102f5610939366004612cf0565b611005565b348015610949575f80fd5b5061067d610958366004612d18565b6110c5565b348015610968575f80fd5b506102f57fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa3281565b34801561099b575f80fd5b506102f56109aa36600461236a565b6110e6565b60605f80546109bd90612d51565b80601f01602080910402602001604051908101604052809291908181526020018280546109e990612d51565b8015610a345780601f10610a0b57610100808354040283529160200191610a34565b820191905f5260205f20905b815481529060010190602001808311610a1757829003601f168201915b5050505050905090565b5f610a4c3388888888611113565b979650505050505050565b5f3415610a90576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a9961117a565b9050610acb845f81518110610ab057610ab0612da2565b602002602001015182600184610ac69190612dfc565b61119e565b9695505050505050565b5f81815260026020526040812054610af39060019061ffff16612e0f565b61ffff1692915050565b5f610b1d610b16610b0e8888611233565b86868661131a565b8787611348565b509695505050505050565b5f8181526002602052604081208054640100000000900460ff1615610b505750600792915050565b805461ffff165f819003610b90576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610b9961117a565b905081811015610bad57505f949350505050565b5f610bc1610bbc600185612dfc565b611574565b8454909150790100000000000000000000000000000000000000000000000000900461ffff16610bf18282612e31565b6127108660020154610c039190612e31565b10610c2f57845462010000900461ffff16831115610c22576006610a4c565b6004979650505050505050565b5f610c3a8383612e31565b612710876001015485610c4d9190612dfc565b610c579190612e31565b10159050808015610c735750855462010000900461ffff168411155b15610c8657506001979650505050505050565b506003979650505050505050565b5f82815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b92915050565b5f610cc782611623565b5f610ce3338484611348565b509392505050565b5f610cf93386868686611113565b95945050505050565b5f610d0e338686611348565b5095945050505050565b5f610d0e85858585611640565b610d2d611914565b6040517f889eba3b00000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063889eba3b906044015b5f604051808303815f87803b158015610dba575f80fd5b505af1158015610dcc573d5f803e3d5ffd5b505050505050565b5f610df0610de7610b0e8a8a8a8a61194f565b89898989611113565b98975050505050505050565b5f610e0561117a565b905090565b610e1261198e565b610e1b816119fd565b50565b5f610e3c610e33610b0e8c8c8c8c8c8c611aa4565b8b8b8b8b611113565b9a9950505050505050505050565b610e52611914565b610e5c8282611ae7565b5050565b610e68611914565b6040517f10bf5068000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310bf5068906024015f604051808303815f87803b158015610eed575f80fd5b505af1158015610eff573d5f803e3d5ffd5b5050505050565b5f610cf9835f81518110610f1c57610f1c612da2565b6020026020010151611623565b5f818152600260205260408120805461ffff808216936201000083049091169264010000000090920460ff16918190819081908190610f678a610b28565b815460018301546002909301549a9c999b5097999098790100000000000000000000000000000000000000000000000000890461ffff16989297509095506501000000000090910473ffffffffffffffffffffffffffffffffffffffff169350915050565b5f610fe6610fdf610b0e8a8a8a8a611b62565b8989611348565b5098975050505050505050565b610ffb611914565b610e5c8282611ba1565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa15801561109a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190612e48565b9392505050565b6110cd611914565b6110d78383611ae7565b6110e18382611ba1565b505050565b5f6127106110f8610bbc600185612dfc565b600454611109919061ffff16612e31565b610cc79190612e5f565b5f805b84811015610d0e576111678787878481811061113457611134612da2565b9050602002013586868581811061114d5761114d612da2565b90506020020160208101906111629190612e97565b611348565b50915061117381612eb0565b9050611116565b5f611189600c6213c680612e5f565b6111939043612e5f565b610e05906001612ee7565b5f34156111d7576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818310611201576111f384846111ec81612efa565b9550611c1c565b9050805f036110be576111d7565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f906110be906080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f610cf9857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868686611d8a565b5f82815260026020526040812081908161136186610b28565b90506001816007811115611377576113776127d0565b146113b957806040517ff1a25b130000000000000000000000000000000000000000000000000000000081526004016113b09190612836565b60405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915290205460ff1615611422576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155825461148c919061ffff16612e0f565b61ffff16925061149c8784611005565b93505f8560ff1660018111156114b4576114b46127d0565b60018111156114c5576114c56127d0565b036114e85783826001015f8282546114dd9190612ee7565b909155506115019050565b83826002015f8282546114fb9190612ee7565b90915550505b6040805187815260ff871660208201529081018590526080606082018190525f9082015273ffffffffffffffffffffffffffffffffffffffff8816907fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49060a00160405180910390a25050935093915050565b6040517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063981b24d090602401602060405180830381865afa1580156115ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc79190612e48565b5f610cc7828261163161117a565b61163b9190612ee7565b611f0e565b5f80855160011461167d576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16865f815181106116a6576116a6612da2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600114611736576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f8151811061174857611748612da2565b60200260200101515f14611788576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83516001146117c3576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117e5845f815181106117d8576117d8612da2565b6020026020010151611f5f565b5f6117ee61117a565b6117f89190612ee7565b905061181d845f8151811061180f5761180f612da2565b602002602001015182611f0e565b5f8181526002602052604090205490925061ffff1615611869576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6118748383612120565b90507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0833389898b5167ffffffffffffffff8111156118b5576118b561245c565b6040519080825280602002602001820160405280156118e857816020015b60608152602001906001900390816118d35790505b508a88888c60405161190299989796959493929190612fba565b60405180910390a15094509492505050565b33301461194d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610cf97fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa325f1b86868686604051602001611276959493929190613109565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461194d576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108161ffff161115611a3d576040517f5b29621e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f610a4c7f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff5f1b888888888888604051602001611276979695949392919061317c565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610da3565b5f610cf97f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f5f1b86868686604051602001611276959493929190613280565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610da3565b5f611c278383611f0e565b5f81815260026020526040902080549192509061ffff168314611c4d575f915050610cc7565b6004611c5883610b28565b6007811115611c6957611c696127d0565b14611c77575f915050610cc7565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90611cd69084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051611d0591906132a8565b5f604051808303815f865af19150503d805f8114611d3e576040519150601f19603f3d011682016040523d82523d5f602084013e611d43565b606091505b509150915081611d8157806040517f15fcd6750000000000000000000000000000000000000000000000000000000081526004016113b09190612358565b50505092915050565b5f84421115611dce576040517ff88f0490000000000000000000000000000000000000000000000000000000008152600481018690524260248201526044016113b0565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180611e0f57508360ff16601b14158015611e0f57508360ff16601c14155b15611e46576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611e96573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610cf9576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8282604051602001611f229291906132c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f611f69826132e4565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4d87a120000000000000000000000000000000000000000000000000000000014801590611fff57507fffffffff0000000000000000000000000000000000000000000000000000000081167fefefad0c0000000000000000000000000000000000000000000000000000000014155b801561204d57507fffffffff0000000000000000000000000000000000000000000000000000000081167fd48d84230000000000000000000000000000000000000000000000000000000014155b801561209b57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb57751250000000000000000000000000000000000000000000000000000000014155b80156120e957507fffffffff0000000000000000000000000000000000000000000000000000000081167f889eba3b0000000000000000000000000000000000000000000000000000000014155b15610e5c576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61212c826001612ee7565b604080516101008101825261ffff948516815282851660208083019182525f83850181815233606086019081526004548a166080870190815260a0870184815260c0880185815260e089018681529d8652600296879052989094209651875496519351925191519451908c167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009097169690961762010000938c1693909302929092177fffffffffffffff000000000000000000000000000000000000000000ffffffff16640100000000911515919091027fffffffffffffff0000000000000000000000000000000000000000ffffffffff16176501000000000073ffffffffffffffffffffffffffffffffffffffff90921691909102177fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff16790100000000000000000000000000000000000000000000000000918916919091027fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177b0100000000000000000000000000000000000000000000000000000092909716919091029590951781559051600182015593519390920192909255919050565b5f5b838110156123075781810151838201526020016122ef565b50505f910152565b5f81518084526123268160208601602086016122ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6110be602083018461230f565b5f6020828403121561237a575f80fd5b5035919050565b5f8083601f840112612391575f80fd5b50813567ffffffffffffffff8111156123a8575f80fd5b6020830191508360208260051b85010111156123c2575f80fd5b9250929050565b5f805f805f80606087890312156123de575f80fd5b863567ffffffffffffffff808211156123f5575f80fd5b6124018a838b01612381565b90985096506020890135915080821115612419575f80fd5b6124258a838b01612381565b9096509450604089013591508082111561243d575f80fd5b5061244a89828a01612381565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156124d0576124d061245c565b604052919050565b5f67ffffffffffffffff8211156124f1576124f161245c565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461251e575f80fd5b919050565b5f82601f830112612532575f80fd5b81356020612547612542836124d8565b612489565b82815260059290921b84018101918181019086841115612565575f80fd5b8286015b84811015610b1d5761257a816124fb565b8352918301918301612569565b5f82601f830112612596575f80fd5b813560206125a6612542836124d8565b82815260059290921b840181019181810190868411156125c4575f80fd5b8286015b84811015610b1d57803583529183019183016125c8565b5f67ffffffffffffffff8311156125f8576125f861245c565b61262960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612489565b905082815283838301111561263c575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112612661575f80fd5b6110be838335602085016125df565b5f82601f83011261267f575f80fd5b8135602061268f612542836124d8565b82815260059290921b840181019181810190868411156126ad575f80fd5b8286015b84811015610b1d57803567ffffffffffffffff8111156126d0575f8081fd5b6126de8986838b0101612652565b8452509183019183016126b1565b5f805f80608085870312156126ff575f80fd5b843567ffffffffffffffff80821115612716575f80fd5b61272288838901612523565b95506020870135915080821115612737575f80fd5b61274388838901612587565b94506040870135915080821115612758575f80fd5b5061276587828801612670565b949793965093946060013593505050565b803560ff8116811461251e575f80fd5b5f805f805f60a0868803121561279a575f80fd5b853594506127aa60208701612776565b93506127b860408701612776565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60088110612832577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610cc782846127fd565b5f8060408385031215612855575f80fd5b82359150612865602084016124fb565b90509250929050565b5f6020828403121561287e575f80fd5b813567ffffffffffffffff811115612894575f80fd5b6128a084828501612652565b949350505050565b5f80604083850312156128b9575f80fd5b8235915061286560208401612776565b5f805f80604085870312156128dc575f80fd5b843567ffffffffffffffff808211156128f3575f80fd5b6128ff88838901612381565b90965094506020870135915080821115612917575f80fd5b5061292487828801612381565b95989497509550505050565b5f8083601f840112612940575f80fd5b50813567ffffffffffffffff811115612957575f80fd5b6020830191508360208285010111156123c2575f80fd5b5f805f8060608587031215612981575f80fd5b8435935061299160208601612776565b9250604085013567ffffffffffffffff8111156129ac575f80fd5b61292487828801612930565b5f805f80608085870312156129cb575f80fd5b843567ffffffffffffffff808211156129e2575f80fd5b6129ee88838901612523565b95506020870135915080821115612a03575f80fd5b612a0f88838901612587565b94506040870135915080821115612a24575f80fd5b612a3088838901612670565b93506060870135915080821115612a45575f80fd5b508501601f81018713612a56575f80fd5b612a65878235602084016125df565b91505092959194509250565b5f60208284031215612a81575f80fd5b6110be826124fb565b5f8060408385031215612a9b575f80fd5b50508035926020909101359150565b5f805f805f805f60a0888a031215612ac0575f80fd5b873567ffffffffffffffff80821115612ad7575f80fd5b612ae38b838c01612381565b909950975060208a0135915080821115612afb575f80fd5b50612b088a828b01612381565b9096509450612b1b905060408901612776565b9250606088013591506080880135905092959891949750929550565b5f60208284031215612b47575f80fd5b813561ffff811681146110be575f80fd5b5f805f805f805f805f60c08a8c031215612b70575f80fd5b893567ffffffffffffffff80821115612b87575f80fd5b612b938d838e01612381565b909b50995060208c0135915080821115612bab575f80fd5b612bb78d838e01612381565b909950975060408c0135915080821115612bcf575f80fd5b50612bdc8c828d01612381565b9096509450612bef905060608b01612776565b925060808a0135915060a08a013590509295985092959850929598565b61ffff898116825288811660208301528715156040830152610100820190612c3760608401896127fd565b95909516608082015260a081019390935260c083019190915273ffffffffffffffffffffffffffffffffffffffff1660e090910152949350505050565b5f805f805f805f60c0888a031215612c8a575f80fd5b87359650612c9a60208901612776565b9550604088013567ffffffffffffffff811115612cb5575f80fd5b612cc18a828b01612930565b9096509450612cd4905060608901612776565b92506080880135915060a0880135905092959891949750929550565b5f8060408385031215612d01575f80fd5b612d0a836124fb565b946020939093013593505050565b5f805f60608486031215612d2a575f80fd5b83359250612d3a602085016124fb565b9150612d48604085016124fb565b90509250925092565b600181811c90821680612d6557607f821691505b602082108103612d9c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610cc757610cc7612dcf565b61ffff828116828216039080821115612e2a57612e2a612dcf565b5092915050565b8082028115828204841417610cc757610cc7612dcf565b5f60208284031215612e58575f80fd5b5051919050565b5f82612e92577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215612ea7575f80fd5b6110be82612776565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee057612ee0612dcf565b5060010190565b80820180821115610cc757610cc7612dcf565b5f81612f0857612f08612dcf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8151808452602080850194508084015f5b83811015612f5c57815187529582019590820190600101612f40565b509495945050505050565b5f81518084526020808501808196508360051b810191508286015f5b85811015612fad578284038952612f9b84835161230f565b98850198935090840190600101612f83565b5091979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e16828701528360408701528293508c5180845261014087019450828e0193505f5b8181101561301c578451831686529483019493830193600101612ffe565b50505050508281036060840152613033818a612f2e565b905082810360808401526130478189612f67565b905082810360a084015261305b8188612f67565b90508560c08401528460e084015282810361010084015261307c818561230f565b9c9b505050505050505050505050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156130bc575f80fd5b8260051b80836020870137939093016020019392505050565b8183525f60208085019450825f5b85811015612f5c5760ff6130f683612776565b16875295820195908201906001016130e3565b858152606060208201525f61312260608301868861308c565b8281036040840152610df08185876130d5565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8781525f602060808184015261319660808401898b61308c565b83810360408501526131a981888a6130d5565b84810360608601528581529050818101600586901b82018301875f5b8881101561326d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112613225575f80fd5b8a01868101903567ffffffffffffffff811115613240575f80fd5b80360382131561324e575f80fd5b613259858284613135565b9588019594505050908501906001016131c5565b50909d9c50505050505050505050505050565b85815284602082015260ff84166040820152608060608201525f610a4c608083018486613135565b5f82516132b98184602087016122ed565b9190910192915050565b604081525f6132d5604083018561230f565b90508260208301529392505050565b5f815160208301517fffffffff000000000000000000000000000000000000000000000000000000008082169350600483101561332b5780818460040360031b1b83161693505b50505091905056fea2646970667358221220aefdca00e9b93b02cc8dc985fb7ad81714d04de8155cecc35f1d141dda7a63bd64736f6c63430008150033" } diff --git a/bytecode/EmergencyGovernorDeployer.json b/bytecode/EmergencyGovernorDeployer.json new file mode 100644 index 00000000..663c3adf --- /dev/null +++ b/bytecode/EmergencyGovernorDeployer.json @@ -0,0 +1 @@ +{ "bytecode": "0x60c060405234801561000f575f80fd5b5060405161428c38038061428c83398101604081905261002e916100a8565b6001600160a01b038216608081905261005a5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660a08190526100865760405163dfac64ef60e01b815260040160405180910390fd5b50506100d9565b80516001600160a01b03811681146100a3575f80fd5b919050565b5f80604083850312156100b9575f80fd5b6100c28361008d565b91506100d06020840161008d565b90509250929050565b60805160a05161417f61010d5f395f818160df01526101cf01525f818160b70152818161013c01526101ac015261417f5ff3fe608060405234801562000010575f80fd5b50600436106200006c575f3560e01c80638df3227f11620000535780638df3227f14620000d9578063a852d90b1462000101578063affed0e0146200010b575f80fd5b80631af0131c14620000705780632b20e39714620000b1575b5f80fd5b6200008762000081366004620007d7565b62000123565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620000877f000000000000000000000000000000000000000000000000000000000000000081565b620000877f000000000000000000000000000000000000000000000000000000000000000081565b6200008762000260565b620001145f5481565b604051908152602001620000a8565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000194576040517f277a630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808154620001a39062000854565b919050819055507f000000000000000000000000000000000000000000000000000000000000000084847f000000000000000000000000000000000000000000000000000000000000000085604051620001fd90620007a0565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184166040840152909216606082015261ffff909116608082015260a001604051809103905ff08015801562000257573d5f803e3d5ffd5b50949350505050565b5f6200027c305f5460016200027691906200088e565b62000281565b905090565b5f8115620006db57607f8211156200062b5760ff821115620005555761ffff8211156200047f5762ffffff8211156200039a576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b6040516020818303038152906040526200078f565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a016040516020818303038152906040526200078f565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b16603782015260390162000385565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380162000385565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370162000385565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b805160209091012090505b92915050565b6138a580620008a583390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620007d2575f80fd5b919050565b5f805f60608486031215620007ea575f80fd5b620007f584620007ae565b92506200080560208501620007ae565b9150604084013561ffff811681146200081c575f80fd5b809150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000887576200088762000827565b5060010190565b808201808211156200079a576200079a6200082756fe61012060405234801562000011575f80fd5b50604051620038a5380380620038a583398101604081905262000034916200026f565b60408051808201909152601181527022b6b2b933b2b731bca3b7bb32b93737b960791b6020820152858583838383827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f62000091838262000384565b604051620000a091906200044c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506001600160a01b03821660a0819052620001365760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660c081905262000163576040516316d3e4a360e01b815260040160405180910390fd5b5050506200017781620001e160201b60201c565b505050506001600160a01b03831660e0819052620001a857604051637301473d60e11b815260040160405180910390fd5b6001600160a01b038216610100819052620001d65760405163dfac64ef60e01b815260040160405180910390fd5b5050505050620004c6565b6127108161ffff1611156200020957604051632d94b10f60e11b815260040160405180910390fd5b6004805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b03811681146200026a575f80fd5b919050565b5f805f805f60a0868803121562000284575f80fd5b6200028f8662000253565b94506200029f6020870162000253565b9350620002af6040870162000253565b9250620002bf6060870162000253565b9150608086015161ffff81168114620002d6575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200030d57607f821691505b6020821081036200032c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200037f575f81815260208120601f850160051c810160208610156200035a5750805b601f850160051c820191505b818110156200037b5782815560010162000366565b5050505b505050565b81516001600160401b03811115620003a057620003a0620002e4565b620003b881620003b18454620002f8565b8462000332565b602080601f831160018114620003ee575f8415620003d65750858301515b5f19600386901b1c1916600185901b1785556200037b565b5f85815260208120601f198616915b828110156200041e57888601518255948401946001909101908401620003fd565b50858210156200043c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8083546200045b81620002f8565b600182811680156200047657600181146200048c57620004ba565b60ff1984168752821515830287019450620004ba565b875f526020805f205f5b85811015620004b15781548a82015290840190820162000496565b50505082870194505b50929695505050505050565b60805160a05160c05160e051610100516133696200053c5f395f81816106ac01526119a601525f818161055e0152610e9701525f81816103a60152818161105301526115a501525f818161040a01528181610d6301528181611b330152611bed01525f818161045b01526112d301526133695ff3fe6080604052600436106102e2575f3560e01c80638968eb0711610186578063c2ee3a08116100dc578063dd4e2ba511610087578063efefad0c11610062578063efefad0c1461093e578063f046c6461461095d578063f8ce560a14610990575f80fd5b8063dd4e2ba5146108d9578063deaaa7cc146108ec578063eb9019d41461091f575f80fd5b8063cee87708116100b7578063cee8770814610868578063d11d19c214610887578063d48d8423146108ba575f80fd5b8063c2ee3a0814610801578063c59057e414610816578063c7f758a814610835575f80fd5b80639b9e9cf81161013c578063c01f9e3711610117578063c01f9e37146107aa578063c0324da1146107df578063c27cabb51461047f575f80fd5b80639b9e9cf81461074d578063b4d87a121461076c578063b57751251461078b575f80fd5b80638e9d8c341161016c5780638e9d8c34146106d057806391ddadf41461070357806394eac9951461072e575f80fd5b80638968eb071461067f5780638df3227f1461069e575f80fd5b80633e4f49e61161023b57806356781388116101f15780637d5e81e2116101cc5780637d5e81e2146105fe5780637ecebe001461061d578063889eba3b1461065e575f80fd5b806356781388146105a157806364a38bf9146105c05780637b3c71d3146105df575f80fd5b80634bf5d7e9116102215780634bf5d7e91461050b5780634d6d7441146105505780634d8e082514610582575f80fd5b80633e4f49e6146104b057806343859632146104dc575f80fd5b80632656227d1161029b5780633644e515116102765780633644e5151461044d5780633932abb11461047f5780633bccf4fd14610491575f80fd5b80632656227d146103e95780632b20e397146103fc5780632d63f6931461042e575f80fd5b8063143489d0116102cb578063143489d014610329578063160d66ae1461039857806324b2c7b3146103ca575f80fd5b806302a251a3146102e657806306fdde0314610308575b5f80fd5b3480156102f1575f80fd5b5060025b6040519081526020015b60405180910390f35b348015610313575f80fd5b5061031c6109af565b6040516102ff9190612358565b348015610334575f80fd5b5061037361034336600461236a565b5f9081526002602052604090205465010000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ff565b3480156103a3575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b3480156103d5575f80fd5b506102f56103e43660046123c9565b610a3e565b6102f56103f73660046126ec565b610a57565b348015610407575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b348015610439575f80fd5b506102f561044836600461236a565b610ad5565b348015610458575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006102f5565b34801561048a575f80fd5b505f6102f5565b34801561049c575f80fd5b506102f56104ab366004612786565b610afd565b3480156104bb575f80fd5b506104cf6104ca36600461236a565b610b28565b6040516102ff9190612836565b3480156104e7575f80fd5b506104fb6104f6366004612844565b610c94565b60405190151581526020016102ff565b348015610516575f80fd5b5060408051808201909152600a81527f6d6f64653d65706f636800000000000000000000000000000000000000000000602082015261031c565b34801561055b575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b34801561058d575f80fd5b506102f561059c36600461286e565b610ccd565b3480156105ac575f80fd5b506102f56105bb3660046128a8565b610cd7565b3480156105cb575f80fd5b506102f56105da3660046128c9565b610ceb565b3480156105ea575f80fd5b506102f56105f936600461296e565b610d02565b348015610609575f80fd5b506102f56106183660046129b8565b610d18565b348015610628575f80fd5b506102f5610637366004612a71565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610669575f80fd5b5061067d610678366004612a8a565b610d25565b005b34801561068a575f80fd5b506102f5610699366004612aaa565b610dd4565b3480156106a9575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610373565b3480156106db575f80fd5b506102f57f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff81565b34801561070e575f80fd5b50610717610dfc565b60405165ffffffffffff90911681526020016102ff565b348015610739575f80fd5b5061067d610748366004612b37565b610e0a565b348015610758575f80fd5b506102f5610767366004612b58565b610e1e565b348015610777575f80fd5b5061067d610786366004612844565b610e4a565b348015610796575f80fd5b5061067d6107a536600461236a565b610e60565b3480156107b5575f80fd5b506102f56107c436600461236a565b5f9081526002602052604090205462010000900461ffff1690565b3480156107ea575f80fd5b5060045460405161ffff90911681526020016102ff565b34801561080c575f80fd5b506102f561271081565b348015610821575f80fd5b506102f56108303660046126ec565b610f06565b348015610840575f80fd5b5061085461084f36600461236a565b610f29565b6040516102ff989796959493929190612c0c565b348015610873575f80fd5b506102f5610882366004612c74565b610fcc565b348015610892575f80fd5b506102f57f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f81565b3480156108c5575f80fd5b5061067d6108d4366004612844565b610ff3565b3480156108e4575f80fd5b50606061031c565b3480156108f7575f80fd5b506102f57f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b34801561092a575f80fd5b506102f5610939366004612cf0565b611005565b348015610949575f80fd5b5061067d610958366004612d18565b6110c5565b348015610968575f80fd5b506102f57fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa3281565b34801561099b575f80fd5b506102f56109aa36600461236a565b6110e6565b60605f80546109bd90612d51565b80601f01602080910402602001604051908101604052809291908181526020018280546109e990612d51565b8015610a345780601f10610a0b57610100808354040283529160200191610a34565b820191905f5260205f20905b815481529060010190602001808311610a1757829003601f168201915b5050505050905090565b5f610a4c3388888888611113565b979650505050505050565b5f3415610a90576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a9961117a565b9050610acb845f81518110610ab057610ab0612da2565b602002602001015182600184610ac69190612dfc565b61119e565b9695505050505050565b5f81815260026020526040812054610af39060019061ffff16612e0f565b61ffff1692915050565b5f610b1d610b16610b0e8888611233565b86868661131a565b8787611348565b509695505050505050565b5f8181526002602052604081208054640100000000900460ff1615610b505750600792915050565b805461ffff165f819003610b90576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610b9961117a565b905081811015610bad57505f949350505050565b5f610bc1610bbc600185612dfc565b611574565b8454909150790100000000000000000000000000000000000000000000000000900461ffff16610bf18282612e31565b6127108660020154610c039190612e31565b10610c2f57845462010000900461ffff16831115610c22576006610a4c565b6004979650505050505050565b5f610c3a8383612e31565b612710876001015485610c4d9190612dfc565b610c579190612e31565b10159050808015610c735750855462010000900461ffff168411155b15610c8657506001979650505050505050565b506003979650505050505050565b5f82815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b92915050565b5f610cc782611623565b5f610ce3338484611348565b509392505050565b5f610cf93386868686611113565b95945050505050565b5f610d0e338686611348565b5095945050505050565b5f610d0e85858585611640565b610d2d611914565b6040517f889eba3b00000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063889eba3b906044015b5f604051808303815f87803b158015610dba575f80fd5b505af1158015610dcc573d5f803e3d5ffd5b505050505050565b5f610df0610de7610b0e8a8a8a8a61194f565b89898989611113565b98975050505050505050565b5f610e0561117a565b905090565b610e1261198e565b610e1b816119fd565b50565b5f610e3c610e33610b0e8c8c8c8c8c8c611aa4565b8b8b8b8b611113565b9a9950505050505050505050565b610e52611914565b610e5c8282611ae7565b5050565b610e68611914565b6040517f10bf5068000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310bf5068906024015f604051808303815f87803b158015610eed575f80fd5b505af1158015610eff573d5f803e3d5ffd5b5050505050565b5f610cf9835f81518110610f1c57610f1c612da2565b6020026020010151611623565b5f818152600260205260408120805461ffff808216936201000083049091169264010000000090920460ff16918190819081908190610f678a610b28565b815460018301546002909301549a9c999b5097999098790100000000000000000000000000000000000000000000000000890461ffff16989297509095506501000000000090910473ffffffffffffffffffffffffffffffffffffffff169350915050565b5f610fe6610fdf610b0e8a8a8a8a611b62565b8989611348565b5098975050505050505050565b610ffb611914565b610e5c8282611ba1565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa15801561109a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190612e48565b9392505050565b6110cd611914565b6110d78383611ae7565b6110e18382611ba1565b505050565b5f6127106110f8610bbc600185612dfc565b600454611109919061ffff16612e31565b610cc79190612e5f565b5f805b84811015610d0e576111678787878481811061113457611134612da2565b9050602002013586868581811061114d5761114d612da2565b90506020020160208101906111629190612e97565b611348565b50915061117381612eb0565b9050611116565b5f611189600c6213c680612e5f565b6111939043612e5f565b610e05906001612ee7565b5f34156111d7576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818310611201576111f384846111ec81612efa565b9550611c1c565b9050805f036110be576111d7565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f906110be906080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f610cf9857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868686611d8a565b5f82815260026020526040812081908161136186610b28565b90506001816007811115611377576113776127d0565b146113b957806040517ff1a25b130000000000000000000000000000000000000000000000000000000081526004016113b09190612836565b60405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915290205460ff1615611422576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155825461148c919061ffff16612e0f565b61ffff16925061149c8784611005565b93505f8560ff1660018111156114b4576114b46127d0565b60018111156114c5576114c56127d0565b036114e85783826001015f8282546114dd9190612ee7565b909155506115019050565b83826002015f8282546114fb9190612ee7565b90915550505b6040805187815260ff871660208201529081018590526080606082018190525f9082015273ffffffffffffffffffffffffffffffffffffffff8816907fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49060a00160405180910390a25050935093915050565b6040517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063981b24d090602401602060405180830381865afa1580156115ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc79190612e48565b5f610cc7828261163161117a565b61163b9190612ee7565b611f0e565b5f80855160011461167d576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16865f815181106116a6576116a6612da2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600114611736576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f8151811061174857611748612da2565b60200260200101515f14611788576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83516001146117c3576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117e5845f815181106117d8576117d8612da2565b6020026020010151611f5f565b5f6117ee61117a565b6117f89190612ee7565b905061181d845f8151811061180f5761180f612da2565b602002602001015182611f0e565b5f8181526002602052604090205490925061ffff1615611869576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6118748383612120565b90507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0833389898b5167ffffffffffffffff8111156118b5576118b561245c565b6040519080825280602002602001820160405280156118e857816020015b60608152602001906001900390816118d35790505b508a88888c60405161190299989796959493929190612fba565b60405180910390a15094509492505050565b33301461194d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610cf97fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa325f1b86868686604051602001611276959493929190613109565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461194d576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108161ffff161115611a3d576040517f5b29621e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f610a4c7f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff5f1b888888888888604051602001611276979695949392919061317c565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610da3565b5f610cf97f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f5f1b86868686604051602001611276959493929190613280565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610da3565b5f611c278383611f0e565b5f81815260026020526040902080549192509061ffff168314611c4d575f915050610cc7565b6004611c5883610b28565b6007811115611c6957611c696127d0565b14611c77575f915050610cc7565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90611cd69084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051611d0591906132a8565b5f604051808303815f865af19150503d805f8114611d3e576040519150601f19603f3d011682016040523d82523d5f602084013e611d43565b606091505b509150915081611d8157806040517f15fcd6750000000000000000000000000000000000000000000000000000000081526004016113b09190612358565b50505092915050565b5f84421115611dce576040517ff88f0490000000000000000000000000000000000000000000000000000000008152600481018690524260248201526044016113b0565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180611e0f57508360ff16601b14158015611e0f57508360ff16601c14155b15611e46576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611e96573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610cf9576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8282604051602001611f229291906132c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f611f69826132e4565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4d87a120000000000000000000000000000000000000000000000000000000014801590611fff57507fffffffff0000000000000000000000000000000000000000000000000000000081167fefefad0c0000000000000000000000000000000000000000000000000000000014155b801561204d57507fffffffff0000000000000000000000000000000000000000000000000000000081167fd48d84230000000000000000000000000000000000000000000000000000000014155b801561209b57507fffffffff0000000000000000000000000000000000000000000000000000000081167fb57751250000000000000000000000000000000000000000000000000000000014155b80156120e957507fffffffff0000000000000000000000000000000000000000000000000000000081167f889eba3b0000000000000000000000000000000000000000000000000000000014155b15610e5c576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61212c826001612ee7565b604080516101008101825261ffff948516815282851660208083019182525f83850181815233606086019081526004548a166080870190815260a0870184815260c0880185815260e089018681529d8652600296879052989094209651875496519351925191519451908c167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009097169690961762010000938c1693909302929092177fffffffffffffff000000000000000000000000000000000000000000ffffffff16640100000000911515919091027fffffffffffffff0000000000000000000000000000000000000000ffffffffff16176501000000000073ffffffffffffffffffffffffffffffffffffffff90921691909102177fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff16790100000000000000000000000000000000000000000000000000918916919091027fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177b0100000000000000000000000000000000000000000000000000000092909716919091029590951781559051600182015593519390920192909255919050565b5f5b838110156123075781810151838201526020016122ef565b50505f910152565b5f81518084526123268160208601602086016122ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6110be602083018461230f565b5f6020828403121561237a575f80fd5b5035919050565b5f8083601f840112612391575f80fd5b50813567ffffffffffffffff8111156123a8575f80fd5b6020830191508360208260051b85010111156123c2575f80fd5b9250929050565b5f805f805f80606087890312156123de575f80fd5b863567ffffffffffffffff808211156123f5575f80fd5b6124018a838b01612381565b90985096506020890135915080821115612419575f80fd5b6124258a838b01612381565b9096509450604089013591508082111561243d575f80fd5b5061244a89828a01612381565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156124d0576124d061245c565b604052919050565b5f67ffffffffffffffff8211156124f1576124f161245c565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461251e575f80fd5b919050565b5f82601f830112612532575f80fd5b81356020612547612542836124d8565b612489565b82815260059290921b84018101918181019086841115612565575f80fd5b8286015b84811015610b1d5761257a816124fb565b8352918301918301612569565b5f82601f830112612596575f80fd5b813560206125a6612542836124d8565b82815260059290921b840181019181810190868411156125c4575f80fd5b8286015b84811015610b1d57803583529183019183016125c8565b5f67ffffffffffffffff8311156125f8576125f861245c565b61262960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612489565b905082815283838301111561263c575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112612661575f80fd5b6110be838335602085016125df565b5f82601f83011261267f575f80fd5b8135602061268f612542836124d8565b82815260059290921b840181019181810190868411156126ad575f80fd5b8286015b84811015610b1d57803567ffffffffffffffff8111156126d0575f8081fd5b6126de8986838b0101612652565b8452509183019183016126b1565b5f805f80608085870312156126ff575f80fd5b843567ffffffffffffffff80821115612716575f80fd5b61272288838901612523565b95506020870135915080821115612737575f80fd5b61274388838901612587565b94506040870135915080821115612758575f80fd5b5061276587828801612670565b949793965093946060013593505050565b803560ff8116811461251e575f80fd5b5f805f805f60a0868803121561279a575f80fd5b853594506127aa60208701612776565b93506127b860408701612776565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60088110612832577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610cc782846127fd565b5f8060408385031215612855575f80fd5b82359150612865602084016124fb565b90509250929050565b5f6020828403121561287e575f80fd5b813567ffffffffffffffff811115612894575f80fd5b6128a084828501612652565b949350505050565b5f80604083850312156128b9575f80fd5b8235915061286560208401612776565b5f805f80604085870312156128dc575f80fd5b843567ffffffffffffffff808211156128f3575f80fd5b6128ff88838901612381565b90965094506020870135915080821115612917575f80fd5b5061292487828801612381565b95989497509550505050565b5f8083601f840112612940575f80fd5b50813567ffffffffffffffff811115612957575f80fd5b6020830191508360208285010111156123c2575f80fd5b5f805f8060608587031215612981575f80fd5b8435935061299160208601612776565b9250604085013567ffffffffffffffff8111156129ac575f80fd5b61292487828801612930565b5f805f80608085870312156129cb575f80fd5b843567ffffffffffffffff808211156129e2575f80fd5b6129ee88838901612523565b95506020870135915080821115612a03575f80fd5b612a0f88838901612587565b94506040870135915080821115612a24575f80fd5b612a3088838901612670565b93506060870135915080821115612a45575f80fd5b508501601f81018713612a56575f80fd5b612a65878235602084016125df565b91505092959194509250565b5f60208284031215612a81575f80fd5b6110be826124fb565b5f8060408385031215612a9b575f80fd5b50508035926020909101359150565b5f805f805f805f60a0888a031215612ac0575f80fd5b873567ffffffffffffffff80821115612ad7575f80fd5b612ae38b838c01612381565b909950975060208a0135915080821115612afb575f80fd5b50612b088a828b01612381565b9096509450612b1b905060408901612776565b9250606088013591506080880135905092959891949750929550565b5f60208284031215612b47575f80fd5b813561ffff811681146110be575f80fd5b5f805f805f805f805f60c08a8c031215612b70575f80fd5b893567ffffffffffffffff80821115612b87575f80fd5b612b938d838e01612381565b909b50995060208c0135915080821115612bab575f80fd5b612bb78d838e01612381565b909950975060408c0135915080821115612bcf575f80fd5b50612bdc8c828d01612381565b9096509450612bef905060608b01612776565b925060808a0135915060a08a013590509295985092959850929598565b61ffff898116825288811660208301528715156040830152610100820190612c3760608401896127fd565b95909516608082015260a081019390935260c083019190915273ffffffffffffffffffffffffffffffffffffffff1660e090910152949350505050565b5f805f805f805f60c0888a031215612c8a575f80fd5b87359650612c9a60208901612776565b9550604088013567ffffffffffffffff811115612cb5575f80fd5b612cc18a828b01612930565b9096509450612cd4905060608901612776565b92506080880135915060a0880135905092959891949750929550565b5f8060408385031215612d01575f80fd5b612d0a836124fb565b946020939093013593505050565b5f805f60608486031215612d2a575f80fd5b83359250612d3a602085016124fb565b9150612d48604085016124fb565b90509250925092565b600181811c90821680612d6557607f821691505b602082108103612d9c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610cc757610cc7612dcf565b61ffff828116828216039080821115612e2a57612e2a612dcf565b5092915050565b8082028115828204841417610cc757610cc7612dcf565b5f60208284031215612e58575f80fd5b5051919050565b5f82612e92577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215612ea7575f80fd5b6110be82612776565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee057612ee0612dcf565b5060010190565b80820180821115610cc757610cc7612dcf565b5f81612f0857612f08612dcf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8151808452602080850194508084015f5b83811015612f5c57815187529582019590820190600101612f40565b509495945050505050565b5f81518084526020808501808196508360051b810191508286015f5b85811015612fad578284038952612f9b84835161230f565b98850198935090840190600101612f83565b5091979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e16828701528360408701528293508c5180845261014087019450828e0193505f5b8181101561301c578451831686529483019493830193600101612ffe565b50505050508281036060840152613033818a612f2e565b905082810360808401526130478189612f67565b905082810360a084015261305b8188612f67565b90508560c08401528460e084015282810361010084015261307c818561230f565b9c9b505050505050505050505050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156130bc575f80fd5b8260051b80836020870137939093016020019392505050565b8183525f60208085019450825f5b85811015612f5c5760ff6130f683612776565b16875295820195908201906001016130e3565b858152606060208201525f61312260608301868861308c565b8281036040840152610df08185876130d5565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8781525f602060808184015261319660808401898b61308c565b83810360408501526131a981888a6130d5565b84810360608601528581529050818101600586901b82018301875f5b8881101561326d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112613225575f80fd5b8a01868101903567ffffffffffffffff811115613240575f80fd5b80360382131561324e575f80fd5b613259858284613135565b9588019594505050908501906001016131c5565b50909d9c50505050505050505050505050565b85815284602082015260ff84166040820152608060608201525f610a4c608083018486613135565b5f82516132b98184602087016122ed565b9190910192915050565b604081525f6132d5604083018561230f565b90508260208301529392505050565b5f815160208301517fffffffff000000000000000000000000000000000000000000000000000000008082169350600483101561332b5780818460040360031b1b83161693505b50505091905056fea2646970667358221220aefdca00e9b93b02cc8dc985fb7ad81714d04de8155cecc35f1d141dda7a63bd64736f6c63430008150033a2646970667358221220f13805e9487ed613fe42abb6f853ea3d77e9adb11219b78284260a4cd06f225164736f6c63430008150033" } diff --git a/bytecode/PowerBootstrapToken.json b/bytecode/PowerBootstrapToken.json new file mode 100644 index 00000000..1a3b6f3f --- /dev/null +++ b/bytecode/PowerBootstrapToken.json @@ -0,0 +1 @@ +{ "bytecode": "0x60a060405234801561000f575f80fd5b5060405161043a38038061043a83398101604081905261002e916101be565b81518151808214610060576040516355c5b3e360e11b8152600481018390526024810182905260440160405180910390fd5b5f805b838110156100e25784818151811061007d5761007d610288565b60200260200101515f8088848151811061009957610099610288565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20819055826100ce91906102b0565b9150806100da816102c9565b915050610063565b50608052506102e192505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561012c5761012c6100f0565b604052919050565b5f6001600160401b0382111561014c5761014c6100f0565b5060051b60200190565b5f82601f830112610165575f80fd5b8151602061017a61017583610134565b610104565b82815260059290921b84018101918181019086841115610198575f80fd5b8286015b848110156101b3578051835291830191830161019c565b509695505050505050565b5f80604083850312156101cf575f80fd5b82516001600160401b03808211156101e5575f80fd5b818501915085601f8301126101f8575f80fd5b8151602061020861017583610134565b82815260059290921b84018101918181019089841115610226575f80fd5b948201945b838610156102595785516001600160a01b038116811461024a575f8081fd5b8252948201949082019061022b565b91880151919650909350505080821115610271575f80fd5b5061027e85828601610156565b9150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156102c3576102c361029c565b92915050565b5f600182016102da576102da61029c565b5060010190565b6080516101426102f85f395f609101526101425ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80634ee2cd7e14610038578063981b24d014610080575b5f80fd5b61006e6100463660046100b3565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b60405190815260200160405180910390f35b61006e61008e3660046100f5565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80604083850312156100c4575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146100e7575f80fd5b946020939093013593505050565b5f60208284031215610105575f80fd5b503591905056fea264697066735822122058476c0e069e385e129d1f5429f3bf54cab369f3e11f931a660da63368e9b1cb64736f6c63430008150033" } diff --git a/bytecode/PowerToken.json b/bytecode/PowerToken.json new file mode 100644 index 00000000..fadfc8d1 --- /dev/null +++ b/bytecode/PowerToken.json @@ -0,0 +1 @@ +{ "bytecode": "0x61018060405234801562000011575f80fd5b5060405162003e1738038062003e1783398101604081905262000034916200049c565b6040518060400160405280600b81526020016a2837bbb2b9102a37b5b2b760a91b815250604051806040016040528060058152602001642827aba2a960d91b8152505f600a6127106200008891906200050a565b838383828282827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f620000bd8382620005ca565b604051620000cc919062000692565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506002620001438382620005ca565b5060ff1660a05250505060c0929092525050600c80546001600160a01b0319166001600160a01b03881690811790915592506200019691505057604051634e71231360e11b815260040160405180910390fd5b6001600160a01b038216610120819052620001c457604051630306120160e01b815260040160405180910390fd5b6001600160a01b038416610100819052620001f2576040516354faf29760e11b815260040160405180910390fd5b6001600160a01b03811660e081905263981b24d0600162000212620002b3565b6200021e91906200070c565b610140818152506040518263ffffffff1660e01b81526004016200024491815260200190565b602060405180830381865afa15801562000260573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000286919062000722565b61016052620002a7600462001457620002e260201b17633b9aca00620002f8565b50505050505062000750565b5f620002c4600c6213c6806200050a565b620002d090436200050a565b620002dd9060016200073a565b905090565b5f620002ef82846200073a565b90505b92915050565b5f808062000305620002b3565b86549091505f81900362000390576001600160f01b038511156200033c57604051632d6c337960e21b815260040160405180910390fd5b506040805180820190915261ffff91821681526001600160f01b0380861660208084019182528954600181018b555f8b81529182209451925190931662010000029190941617910155915082905062000478565b5f620003b088620003a36001856200070c565b5f91825260209091200190565b80546201000090046001600160f01b031695509050620003d2858760208a901c565b93506001600160f01b03841115620003fd57604051632d6c337960e21b815260040160405180910390fd5b805461ffff168311156200045b576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e81529190912094519151909216620100000292169190911791015562000474565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b80516001600160a01b038116811462000497575f80fd5b919050565b5f805f8060808587031215620004b0575f80fd5b620004bb8562000480565b9350620004cb6020860162000480565b9250620004db6040860162000480565b9150620004eb6060860162000480565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b5f826200052557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200055357607f821691505b6020821081036200057257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005c5575f81815260208120601f850160051c81016020861015620005a05750805b601f850160051c820191505b81811015620005c157828155600101620005ac565b5050505b505050565b81516001600160401b03811115620005e657620005e66200052a565b620005fe81620005f784546200053e565b8462000578565b602080601f83116001811462000634575f84156200061c5750858301515b5f19600386901b1c1916600185901b178555620005c1565b5f85815260208120601f198616915b82811015620006645788860151825594840194600190910190840162000643565b50858210156200068257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f808354620006a1816200053e565b60018281168015620006bc5760018114620006d25762000700565b60ff198416875282151583028701945062000700565b875f526020805f205f5b85811015620006f75781548a820152908401908201620006dc565b50505082870194505b50929695505050505050565b81810381811115620002f257620002f2620004f6565b5f6020828403121562000733575f80fd5b5051919050565b80820180821115620002f257620002f2620004f6565b60805160a05160c05160e051610100516101205161014051610160516136096200080e5f395f61181501525f81816103a80152818161093c01528181610dd701528181610f3001528181610f9e0152818161111e015261205701525f81816107b3015261106701525f8181610361015281816109fe01528181610c3001526112df01525f81816104ba015261183d01525f818161069e015281816108c701526127d401525f61045501525f81816104810152611cc401526136095ff3fe608060405234801561000f575f80fd5b5060043610610304575f3560e01c806370a082311161019d578063a797d916116100e8578063d505accf11610093578063ed0849f71161006e578063ed0849f714610796578063f8520c081461079e578063fbfa77cf146107b1575f80fd5b8063d505accf14610717578063dd62ed3e1461072a578063e7a324dc1461076f575f80fd5b8063c2ee3a08116100c3578063c2ee3a08146106e8578063c3cda520146106f1578063c580b26914610704575f80fd5b8063a797d9161461069c578063a9059cbb146106c2578063aaaaaa22146106d5575f80fd5b806395d89b41116101485780639e4a93ec116101235780639e4a93ec1461065f578063a457c2d714610681578063a722468714610694575f80fd5b806395d89b4114610631578063981b24d0146106395780639ab24eb01461064c575f80fd5b80637ecebe00116101785780637ecebe00146105ca5780638ba613ef146105ff57806391ddadf414610612575f80fd5b806370a0823114610591578063740ba218146105a45780637deb6025146105b7575f80fd5b8063313ce5671161025d57806347fdc54811610208578063587cde1e116101e3578063587cde1e146105585780635a4dd47d1461056b5780635c19a95c1461057e575f80fd5b806347fdc548146104f95780634bf5d7e91461050c5780634ee2cd7e14610545575f80fd5b8063397da79d11610238578063397da79d146104b85780633a46b1a8146104de578063414408e5146104f1575f80fd5b8063313ce5671461044e5780633644e5151461047f57806339509351146104a5575f80fd5b806318160ddd116102bd578063286b1d0b11610298578063286b1d0b146104075780632ff2e9dc1461041c57806330adf81f14610427575f80fd5b806318160ddd146103cc5780631d602303146103d457806323b872dd146103f4575f80fd5b806309dc8d92116102ed57806309dc8d92146103495780630c340a241461035f5780630db3a558146103a6575f80fd5b806306fdde0314610308578063095ea7b314610326575b5f80fd5b6103106107d7565b60405161031d919061302f565b60405180910390f35b6103396103343660046130a7565b610866565b604051901515815260200161031d565b61035161087c565b60405190815260200161031d565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031d565b7f0000000000000000000000000000000000000000000000000000000000000000610351565b610351610939565b6103e76103e2366004613110565b61097f565b60405161031d919061314f565b610339610402366004613192565b6109c5565b61041a6104153660046131cb565b6109e6565b005b610351633b9aca0081565b6103517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161031d565b7f0000000000000000000000000000000000000000000000000000000000000000610351565b6103396104b33660046130a7565b610b54565b7f0000000000000000000000000000000000000000000000000000000000000000610381565b6103516104ec3660046130a7565b610bd5565b61041a610c18565b6103e76105073660046131e4565b610d52565b60408051808201909152600a81527f6d6f64653d65706f6368000000000000000000000000000000000000000000006020820152610310565b6103516105533660046130a7565b610dd4565b6103816105663660046131cb565b610e34565b610351610579366004613233565b610e3e565b61041a61058c3660046131cb565b610f20565b61035161059f3660046131cb565b610f2d565b6103e76105b236600461324a565b610fc2565b61041a6105c536600461326a565b610fd0565b6103516105d83660046131cb565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b6103e761060d366004613294565b6110d1565b61061a611103565b60405165ffffffffffff909116815260200161031d565b61031061110c565b610351610647366004613233565b61111b565b61035161065a3660046131cb565b611158565b61033961066d366004613233565b5f908152600e602052604090205460ff1690565b61033961068f3660046130a7565b61118b565b610381611197565b7f0000000000000000000000000000000000000000000000000000000000000000610351565b6103396106d03660046130a7565b6111e3565b6103816106e33660046130a7565b6111ef565b61035161271081565b61041a6106ff3660046132d4565b6111fa565b61041a6107123660046131cb565b6112c7565b61041a610725366004613328565b61133f565b61035161073836600461338d565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260036020908152604080832093909416825291909152205490565b6103517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600d54610351565b6103396107ac3660046130a7565b61144c565b7f0000000000000000000000000000000000000000000000000000000000000000610381565b60605f80546107e5906133b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610811906133b5565b801561085c5780601f106108335761010080835404028352916020019161085c565b820191905f5260205f20905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b5f610872338484611462565b5060015b92915050565b5f80600e5f6108896114cf565b815260208101919091526040015f205460ff166108a6575f6108a9565b60015b60ff16600d546108b9919061342d565b90505f6127106108f56108ec7f000000000000000000000000000000000000000000000000000000000000000083613440565b846127106114f3565b61090390633b9aca00613453565b61090d9190613497565b90505f610918610939565b9050808211610927575f610931565b610931818361342d565b935050505090565b5f7f00000000000000000000000000000000000000000000000000000000000000006109636114cf565b111561097657610971611552565b905090565b50633b9aca0090565b60606109be60048484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061155d92505050565b9392505050565b5f6109d18433846116ee565b6109dc84848461177c565b5060019392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a55576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610aa2576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610aab6114cf565b9050600a548110610b0c57600c54600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055610b08816001613440565b600a555b50600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f815f03610b8e576040517f817e74f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205461087291908590610bd0908690613440565b611462565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526007602052604081205415610c0e57610c098383611799565b6109be565b6109be83836117c7565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c87576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c906114cf565b5f818152600e602052604090205490915060ff1615610cdb576040517f139163ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181907f022cb1cde5e4bb1b7b5720a93034a99caf68d21c09cfeacae42c602ca34b4186905f90a25f818152600e6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600d8054909190610d4b906134aa565b9091555050565b6060610dcc60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061155d92505050565b949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000082111580610e26575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020526040902054155b610c0e57610c0983836118bc565b5f610876826118ff565b5f80610e486114cf565b90505f610e5482611936565b610e6557610e6061194b565b610e73565b610e73600c6213c680613497565b90505f6064610e86600c6213c680613497565b610e909190613497565b90505f610e9d8284613497565b6001901b90505f610eae83856134e1565b9050610ebe61064760018761342d565b610ec89084613453565b600183901c610ed7838661342d565b610ee19190613453565b610eeb8484613453565b610ef59190613440565b610f0189612710613453565b610f0b9190613453565b610f159190613497565b979650505050505050565b610f2a338261195f565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000610f576114cf565b111580610f86575073ffffffffffffffffffffffffffffffffffffffff82165f90815260056020526040902054155b610f9857610f938261197f565b610876565b610876827f00000000000000000000000000000000000000000000000000000000000000006117c7565b60606109be600484846119c0565b610fd861087c565b821115611011576040517fec21873b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61101b83610e3e565b604080518581526020810183905291925033917f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed910160405180910390a261108c611064611197565b337f000000000000000000000000000000000000000000000000000000000000000084611ae3565b6110c2576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110cc8284611b83565b505050565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600560205260409020606090610dcc9084846119c0565b5f6109716114cf565b6060600280546107e5906133b5565b5f7f000000000000000000000000000000000000000000000000000000000000000082111561114d57610f9382611b96565b633b9aca0092915050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526007602052604081205415610f9857610f9382611ba2565b5f6108723384846116ee565b5f600a546111a36114cf565b10156111c65750600b5473ffffffffffffffffffffffffffffffffffffffff1690565b50600c5473ffffffffffffffffffffffffffffffffffffffff1690565b5f61087233848461177c565b5f6109be8383611bcf565b5f611206878787611c07565b90505f6112168287878787611d0b565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040902054909150808803611286576040517f56d8d10600000000000000000000000000000000000000000000000000000000815260048101899052602481018290526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912090820190556112bc828a61195f565b505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611336576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2a81611e8f565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526001602052604081205490611372898989858a611ea1565b90505f6113828288888888611d0b565b90508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614611409576040517fefe0e68600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808c1660048301528216602482015260440161127d565b73ffffffffffffffffffffffffffffffffffffffff8a165f90815260016020819052604090912090840190556114408a8a8a611462565b50505050505050505050565b5f6109be8383611f1f565b5f6109be8284613440565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6114de600c6213c680613497565b6114e89043613497565b610971906001613440565b5f826001165f036115045781611506565b835b90505b60019290921c9182156109be57816115218580613453565b61152b9190613497565b9350600183161561150957816115418583613453565b61154b9190613497565b9050611509565b5f6109716004611fa8565b80516060908067ffffffffffffffff81111561157b5761157b6134f4565b6040519080825280602002602001820160405280156115a4578160200160208202803683370190505b5084549092508015806115b5575081155b156115c1575050610876565b5f846115cc84613521565b935083815181106115df576115df613555565b602002602001015190505b5f611608876115f885613521565b9450845f91825260209091200190565b805490915061ffff165b8281116116dc5781548651620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169087908790811061165757611657613555565b602002602001018181525050845f03611674575050505050610876565b5f8761167f87613521565b9650868151811061169257611692613555565b602002602001015190508381106116d5576040517faeb1ed3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250611612565b50505f82116115ea5750505092915050565b805f03611727576040517f28bd1f0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084165f90815260036020908152604080832093861683529290522054600181016117675750505050565b6117768484610bd0858561342d565b50505050565b61178583612023565b61178e82612023565b6110cc8383836120a4565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526007602052604081206109be90836120c9565b6040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000091633b9aca00917f000000000000000000000000000000000000000000000000000000000000000090911690634ee2cd7e90604401602060405180830381865afa158015611884573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a89190613582565b6118b29190613453565b6109be9190613497565b5f6118c78383612139565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526005602052604090206118f590846120c9565b6109be9190613440565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600660205260408120610876906119309061227f565b836122c2565b5f6119426002836134e1565b60011492915050565b5f436119556122eb565b610971919061342d565b61196882612023565b61197181612023565b61197b8282612307565b5050565b5f61198982612322565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526005602052604090206119b690611fa8565b6108769190613440565b60605f6119cd848461342d565b6119d8906001613440565b90508067ffffffffffffffff8111156119f3576119f36134f4565b604051908082528060200260200182016040528015611a1c578160200160208202803683370190505b508554909250801580611a2d575081155b15611a395750506109be565b835b5f611a49886115f885613521565b805490915061ffff165b828111611ad05781548651620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690879087908110611a9857611a98613555565b602002602001018181525050845f03611ab55750505050506109be565b611abe85613521565b9450611ac983613521565b9250611a53565b50505f8211611a3b575050509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790525f90611b7a908690612334565b95945050505050565b611b8c82612023565b61197b82826123e8565b5f6108766004836120c9565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812061087690611fa8565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206109be90611c019084612403565b846122c2565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610dcc9060a0015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f84421115611d4f576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810186905242602482015260440161127d565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180611d9057508360ff16601b14158015611d9057508360ff16601c14155b15611dc7576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611e17573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b7a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e9881612023565b610f2a81612469565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff8088169282019290925290851660608201526080810184905260a0810183905260c081018290525f90611f159060e001611c67565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081208054808303611f56575f92505050610876565b5f611f7483611f6484613521565b9350835f91825260209091200190565b805490915061ffff1685811115611f8c575050611f99565b8514935061087692505050565b5f8111611f5657505092915050565b80545f908015611ffa57611fce83611fc160018461342d565b5f91825260209091200190565b546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611ffc565b5f5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260056020526040902054156120505750565b5f61207b827f00000000000000000000000000000000000000000000000000000000000000006117c7565b9050805f03612088575050565b61209582611457836124f6565b50506117768261145783612534565b6120ac6125c4565b6120b58361260d565b6120be8261260d565b6110cc838383612656565b81545f908082036120dd575f915050610876565b5f6120eb85611f6484613521565b805490915061ffff16841061212a57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506108769050565b505f81116120dd575092915050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812054810361216b57505f610876565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260056020526040812061219990846120c9565b9050805f036121ab575f915050610876565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526006602052604081206121e3906121dd9086612403565b866122c2565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260096020526040812091925090612215908661277f565b612220906001613440565b90505b8481116122765761223381611936565b15612266576122428282611f1f565b15612266576122596122548585613440565b6127cb565b6122639085613440565b93505b61226f816134aa565b9050612223565b50505092915050565b80545f9080156122ba5761229883611fc160018461342d565b5462010000900473ffffffffffffffffffffffffffffffffffffffff166109be565b5f9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316156122e557826109be565b50919050565b5f6109716122f76114cf565b612302906001613440565b612803565b61230f6125c4565b6123188261260d565b61197b8282612827565b5f6108768261232f6114cf565b612139565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61235857505f610876565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161237f9190613599565b5f604051808303815f865af19150503d805f81146123b8576040519150601f19603f3d011682016040523d82523d5f602084013e6123bd565b606091505b509092509050818015610dcc575080511580610dcc575080806020019051810190610dcc91906135b4565b6123f06125c4565b6123f98261260d565b61197b828261289b565b81545f90808203612417575f915050610876565b5f61242585611f6484613521565b805490915061ffff16841061245a575462010000900473ffffffffffffffffffffffffffffffffffffffff1691506108769050565b505f8111612417575092915050565b61247161290f565b61247a81612950565b6124b0576040517f22ce1a0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f9081526007602052604081206124e19061225490611fa8565b90506124ec81612980565b611776828261298e565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260056020526040812081906125279085856129a9565b915091505b935093915050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040812081906125659085856129a9565b604080518381526020810183905292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a2935093915050565b6125d46125cf6114cf565b611936565b1561260b576040517f66f21c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61261f8161261a83612322565b612bd5565b505073ffffffffffffffffffffffffffffffffffffffff81165f90815260096020526040902061197b906126516114cf565b612be4565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126bb576040517fbf2f44f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271a91815260200190565b60405180910390a35f8061272e8584612c6c565b915091505f8061274f612740886118ff565b61274a858761342d565b612c7b565b90925090506127628661261a858761342d565b50506112bc612770876118ff565b61277a838561342d565b61298e565b81545f90808203612793575f915050610876565b5f6127a185611f6484613521565b805490915061ffff168481116127bb579250610876915050565b50505f8111612793575092915050565b5f6127106127f97f000000000000000000000000000000000000000000000000000000000000000084613453565b6108769190613497565b5f612812600c6213c680613497565b61281d60018461342d565b6108769190613453565b5f6128328383612c8a565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526005602052604081209192509061286390611fa8565b9050805f036128725750505050565b5f8061287e8484612c7b565b90925090506128918561277a838561342d565b5050505050505050565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36128f28282612bd5565b50506128fd81612980565b611776612909836118ff565b8261298e565b61291a6125cf6114cf565b61260b576040517f90bfab2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f908152600860205260408120610876906126516114cf565b6110cc6004611457836129a9565b5f8061299d8461145785612534565b915091505b9250929050565b5f805f6129b46114cf565b86549091505f819003612a83577dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115612a19576040517fb5b0cde400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805180820190915261ffff91821681527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80861660208084019182528954600181018b555f8b81529182209451925190931662010000029190941617910155915082905061252c565b5f612a9388611fc160018561342d565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612acd858763ffffffff8a16565b93507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115612b27576040517fb5b0cde400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805461ffff16831115612b9a576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612bca565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b5f8061299d84611457856124f6565b81545f90801580612c075750612bff84611fc160018461342d565b5461ffff1683115b91508115612c655760408051602080820190925261ffff858116825286546001810188555f8881529390932091519190920180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016919092161790555b5092915050565b5f8061299d84612fc0856124f6565b5f8061299d84612fc085612534565b5f612c9582846122c2565b91505f612ca28385612fcb565b90505f612cad6114cf565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260066020526040812080549293509190819003612dcb578673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612d44576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805180820190915261ffff928316815273ffffffffffffffffffffffffffffffffffffffff938416602080830191825283546001810185555f94855293209151919092018054925190941662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169216919091171790555081610876565b5f612ddb83611fc160018561342d565b8054909150612e069062010000900473ffffffffffffffffffffffffffffffffffffffff16896122c2565b95508673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e6d576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4805461ffff16841115612f71576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808816602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009091169390921692909217179055612fb5565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8716021781555b505050505092915050565b5f6109be828461342d565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461300557826109be565b505f92915050565b5f5b8381101561302757818101518382015260200161300f565b50505f910152565b602081525f825180602084015261304d81604085016020870161300d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146130a2575f80fd5b919050565b5f80604083850312156130b8575f80fd5b6130c18361307f565b946020939093013593505050565b5f8083601f8401126130df575f80fd5b50813567ffffffffffffffff8111156130f6575f80fd5b6020830191508360208260051b85010111156129a2575f80fd5b5f8060208385031215613121575f80fd5b823567ffffffffffffffff811115613137575f80fd5b613143858286016130cf565b90969095509350505050565b602080825282518282018190525f9190848201906040850190845b818110156131865783518352928401929184019160010161316a565b50909695505050505050565b5f805f606084860312156131a4575f80fd5b6131ad8461307f565b92506131bb6020850161307f565b9150604084013590509250925092565b5f602082840312156131db575f80fd5b6109be8261307f565b5f805f604084860312156131f6575f80fd5b6131ff8461307f565b9250602084013567ffffffffffffffff81111561321a575f80fd5b613226868287016130cf565b9497909650939450505050565b5f60208284031215613243575f80fd5b5035919050565b5f806040838503121561325b575f80fd5b50508035926020909101359150565b5f806040838503121561327b575f80fd5b8235915061328b6020840161307f565b90509250929050565b5f805f606084860312156132a6575f80fd5b6132af8461307f565b95602085013595506040909401359392505050565b803560ff811681146130a2575f80fd5b5f805f805f8060c087890312156132e9575f80fd5b6132f28761307f565b9550602087013594506040870135935061330e606088016132c4565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a03121561333e575f80fd5b6133478861307f565b96506133556020890161307f565b95506040880135945060608801359350613371608089016132c4565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561339e575f80fd5b6133a78361307f565b915061328b6020840161307f565b600181811c908216806133c957607f821691505b6020821081036122e5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561087657610876613400565b8082018082111561087657610876613400565b808202811582820484141761087657610876613400565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826134a5576134a561346a565b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134da576134da613400565b5060010190565b5f826134ef576134ef61346a565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8161352f5761352f613400565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215613592575f80fd5b5051919050565b5f82516135aa81846020870161300d565b9190910192915050565b5f602082840312156135c4575f80fd5b815180151581146109be575f80fdfea264697066735822122064d993334ef498dacd0a5064a27e816b92eab432010e53f63bda9bb40eaf09e864736f6c63430008150033" } diff --git a/bytecode/PowerTokenDeployer.json b/bytecode/PowerTokenDeployer.json new file mode 100644 index 00000000..58f4e502 --- /dev/null +++ b/bytecode/PowerTokenDeployer.json @@ -0,0 +1 @@ +{ "bytecode": "0x60c060405234801561000f575f80fd5b506040516147c33803806147c383398101604081905261002e916100a8565b6001600160a01b038216608081905261005a5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660a081905261008657604051630306120160e01b815260040160405180910390fd5b50506100d9565b80516001600160a01b03811681146100a3575f80fd5b919050565b5f80604083850312156100b9575f80fd5b6100c28361008d565b91506100d06020840161008d565b90509250929050565b60805160a0516146bc6101075f395f818161010101526101cf01525f81816076015261015d01526146bc5ff3fe608060405234801562000010575f80fd5b50600436106200006c575f3560e01c8063affed0e01162000053578063affed0e014620000cc578063d9181cd314620000e4578063fbfa77cf14620000fb575f80fd5b80632b20e3971462000070578063a852d90b14620000c2575b5f80fd5b620000987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6200009862000123565b620000d55f5481565b604051908152602001620000b9565b62000098620000f5366004620007ab565b62000144565b620000987f000000000000000000000000000000000000000000000000000000000000000081565b5f6200013f305f5460016200013991906200081f565b62000255565b905090565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620001b5576040517f277a630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808154620001c49062000835565b9190508190555083837f000000000000000000000000000000000000000000000000000000000000000084604051620001fd9062000774565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103905ff0801580156200024c573d5f803e3d5ffd5b50949350505050565b5f8115620006af57607f821115620005ff5760ff821115620005295761ffff821115620004535762ffffff8211156200036e576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b60405160208183030381529060405262000763565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a0160405160208183030381529060405262000763565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b16603782015260390162000359565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380162000359565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370162000359565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b805160209091012090505b92915050565b613e17806200087083390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620007a6575f80fd5b919050565b5f805f60608486031215620007be575f80fd5b620007c98462000782565b9250620007d96020850162000782565b9150620007e96040850162000782565b90509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156200076e576200076e620007f2565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620008685762000868620007f2565b506001019056fe61018060405234801562000011575f80fd5b5060405162003e1738038062003e1783398101604081905262000034916200049c565b6040518060400160405280600b81526020016a2837bbb2b9102a37b5b2b760a91b815250604051806040016040528060058152602001642827aba2a960d91b8152505f600a6127106200008891906200050a565b838383828282827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f620000bd8382620005ca565b604051620000cc919062000692565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506002620001438382620005ca565b5060ff1660a05250505060c0929092525050600c80546001600160a01b0319166001600160a01b03881690811790915592506200019691505057604051634e71231360e11b815260040160405180910390fd5b6001600160a01b038216610120819052620001c457604051630306120160e01b815260040160405180910390fd5b6001600160a01b038416610100819052620001f2576040516354faf29760e11b815260040160405180910390fd5b6001600160a01b03811660e081905263981b24d0600162000212620002b3565b6200021e91906200070c565b610140818152506040518263ffffffff1660e01b81526004016200024491815260200190565b602060405180830381865afa15801562000260573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000286919062000722565b61016052620002a7600462001457620002e260201b17633b9aca00620002f8565b50505050505062000750565b5f620002c4600c6213c6806200050a565b620002d090436200050a565b620002dd9060016200073a565b905090565b5f620002ef82846200073a565b90505b92915050565b5f808062000305620002b3565b86549091505f81900362000390576001600160f01b038511156200033c57604051632d6c337960e21b815260040160405180910390fd5b506040805180820190915261ffff91821681526001600160f01b0380861660208084019182528954600181018b555f8b81529182209451925190931662010000029190941617910155915082905062000478565b5f620003b088620003a36001856200070c565b5f91825260209091200190565b80546201000090046001600160f01b031695509050620003d2858760208a901c565b93506001600160f01b03841115620003fd57604051632d6c337960e21b815260040160405180910390fd5b805461ffff168311156200045b576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e81529190912094519151909216620100000292169190911791015562000474565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b80516001600160a01b038116811462000497575f80fd5b919050565b5f805f8060808587031215620004b0575f80fd5b620004bb8562000480565b9350620004cb6020860162000480565b9250620004db6040860162000480565b9150620004eb6060860162000480565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b5f826200052557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200055357607f821691505b6020821081036200057257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005c5575f81815260208120601f850160051c81016020861015620005a05750805b601f850160051c820191505b81811015620005c157828155600101620005ac565b5050505b505050565b81516001600160401b03811115620005e657620005e66200052a565b620005fe81620005f784546200053e565b8462000578565b602080601f83116001811462000634575f84156200061c5750858301515b5f19600386901b1c1916600185901b178555620005c1565b5f85815260208120601f198616915b82811015620006645788860151825594840194600190910190840162000643565b50858210156200068257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f808354620006a1816200053e565b60018281168015620006bc5760018114620006d25762000700565b60ff198416875282151583028701945062000700565b875f526020805f205f5b85811015620006f75781548a820152908401908201620006dc565b50505082870194505b50929695505050505050565b81810381811115620002f257620002f2620004f6565b5f6020828403121562000733575f80fd5b5051919050565b80820180821115620002f257620002f2620004f6565b60805160a05160c05160e051610100516101205161014051610160516136096200080e5f395f61181501525f81816103a80152818161093c01528181610dd701528181610f3001528181610f9e0152818161111e015261205701525f81816107b3015261106701525f8181610361015281816109fe01528181610c3001526112df01525f81816104ba015261183d01525f818161069e015281816108c701526127d401525f61045501525f81816104810152611cc401526136095ff3fe608060405234801561000f575f80fd5b5060043610610304575f3560e01c806370a082311161019d578063a797d916116100e8578063d505accf11610093578063ed0849f71161006e578063ed0849f714610796578063f8520c081461079e578063fbfa77cf146107b1575f80fd5b8063d505accf14610717578063dd62ed3e1461072a578063e7a324dc1461076f575f80fd5b8063c2ee3a08116100c3578063c2ee3a08146106e8578063c3cda520146106f1578063c580b26914610704575f80fd5b8063a797d9161461069c578063a9059cbb146106c2578063aaaaaa22146106d5575f80fd5b806395d89b41116101485780639e4a93ec116101235780639e4a93ec1461065f578063a457c2d714610681578063a722468714610694575f80fd5b806395d89b4114610631578063981b24d0146106395780639ab24eb01461064c575f80fd5b80637ecebe00116101785780637ecebe00146105ca5780638ba613ef146105ff57806391ddadf414610612575f80fd5b806370a0823114610591578063740ba218146105a45780637deb6025146105b7575f80fd5b8063313ce5671161025d57806347fdc54811610208578063587cde1e116101e3578063587cde1e146105585780635a4dd47d1461056b5780635c19a95c1461057e575f80fd5b806347fdc548146104f95780634bf5d7e91461050c5780634ee2cd7e14610545575f80fd5b8063397da79d11610238578063397da79d146104b85780633a46b1a8146104de578063414408e5146104f1575f80fd5b8063313ce5671461044e5780633644e5151461047f57806339509351146104a5575f80fd5b806318160ddd116102bd578063286b1d0b11610298578063286b1d0b146104075780632ff2e9dc1461041c57806330adf81f14610427575f80fd5b806318160ddd146103cc5780631d602303146103d457806323b872dd146103f4575f80fd5b806309dc8d92116102ed57806309dc8d92146103495780630c340a241461035f5780630db3a558146103a6575f80fd5b806306fdde0314610308578063095ea7b314610326575b5f80fd5b6103106107d7565b60405161031d919061302f565b60405180910390f35b6103396103343660046130a7565b610866565b604051901515815260200161031d565b61035161087c565b60405190815260200161031d565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031d565b7f0000000000000000000000000000000000000000000000000000000000000000610351565b610351610939565b6103e76103e2366004613110565b61097f565b60405161031d919061314f565b610339610402366004613192565b6109c5565b61041a6104153660046131cb565b6109e6565b005b610351633b9aca0081565b6103517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161031d565b7f0000000000000000000000000000000000000000000000000000000000000000610351565b6103396104b33660046130a7565b610b54565b7f0000000000000000000000000000000000000000000000000000000000000000610381565b6103516104ec3660046130a7565b610bd5565b61041a610c18565b6103e76105073660046131e4565b610d52565b60408051808201909152600a81527f6d6f64653d65706f6368000000000000000000000000000000000000000000006020820152610310565b6103516105533660046130a7565b610dd4565b6103816105663660046131cb565b610e34565b610351610579366004613233565b610e3e565b61041a61058c3660046131cb565b610f20565b61035161059f3660046131cb565b610f2d565b6103e76105b236600461324a565b610fc2565b61041a6105c536600461326a565b610fd0565b6103516105d83660046131cb565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b6103e761060d366004613294565b6110d1565b61061a611103565b60405165ffffffffffff909116815260200161031d565b61031061110c565b610351610647366004613233565b61111b565b61035161065a3660046131cb565b611158565b61033961066d366004613233565b5f908152600e602052604090205460ff1690565b61033961068f3660046130a7565b61118b565b610381611197565b7f0000000000000000000000000000000000000000000000000000000000000000610351565b6103396106d03660046130a7565b6111e3565b6103816106e33660046130a7565b6111ef565b61035161271081565b61041a6106ff3660046132d4565b6111fa565b61041a6107123660046131cb565b6112c7565b61041a610725366004613328565b61133f565b61035161073836600461338d565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260036020908152604080832093909416825291909152205490565b6103517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600d54610351565b6103396107ac3660046130a7565b61144c565b7f0000000000000000000000000000000000000000000000000000000000000000610381565b60605f80546107e5906133b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610811906133b5565b801561085c5780601f106108335761010080835404028352916020019161085c565b820191905f5260205f20905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b5f610872338484611462565b5060015b92915050565b5f80600e5f6108896114cf565b815260208101919091526040015f205460ff166108a6575f6108a9565b60015b60ff16600d546108b9919061342d565b90505f6127106108f56108ec7f000000000000000000000000000000000000000000000000000000000000000083613440565b846127106114f3565b61090390633b9aca00613453565b61090d9190613497565b90505f610918610939565b9050808211610927575f610931565b610931818361342d565b935050505090565b5f7f00000000000000000000000000000000000000000000000000000000000000006109636114cf565b111561097657610971611552565b905090565b50633b9aca0090565b60606109be60048484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061155d92505050565b9392505050565b5f6109d18433846116ee565b6109dc84848461177c565b5060019392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a55576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610aa2576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610aab6114cf565b9050600a548110610b0c57600c54600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055610b08816001613440565b600a555b50600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f815f03610b8e576040517f817e74f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205461087291908590610bd0908690613440565b611462565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526007602052604081205415610c0e57610c098383611799565b6109be565b6109be83836117c7565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c87576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c906114cf565b5f818152600e602052604090205490915060ff1615610cdb576040517f139163ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181907f022cb1cde5e4bb1b7b5720a93034a99caf68d21c09cfeacae42c602ca34b4186905f90a25f818152600e6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600d8054909190610d4b906134aa565b9091555050565b6060610dcc60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061155d92505050565b949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000082111580610e26575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020526040902054155b610c0e57610c0983836118bc565b5f610876826118ff565b5f80610e486114cf565b90505f610e5482611936565b610e6557610e6061194b565b610e73565b610e73600c6213c680613497565b90505f6064610e86600c6213c680613497565b610e909190613497565b90505f610e9d8284613497565b6001901b90505f610eae83856134e1565b9050610ebe61064760018761342d565b610ec89084613453565b600183901c610ed7838661342d565b610ee19190613453565b610eeb8484613453565b610ef59190613440565b610f0189612710613453565b610f0b9190613453565b610f159190613497565b979650505050505050565b610f2a338261195f565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000610f576114cf565b111580610f86575073ffffffffffffffffffffffffffffffffffffffff82165f90815260056020526040902054155b610f9857610f938261197f565b610876565b610876827f00000000000000000000000000000000000000000000000000000000000000006117c7565b60606109be600484846119c0565b610fd861087c565b821115611011576040517fec21873b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61101b83610e3e565b604080518581526020810183905291925033917f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed910160405180910390a261108c611064611197565b337f000000000000000000000000000000000000000000000000000000000000000084611ae3565b6110c2576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110cc8284611b83565b505050565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600560205260409020606090610dcc9084846119c0565b5f6109716114cf565b6060600280546107e5906133b5565b5f7f000000000000000000000000000000000000000000000000000000000000000082111561114d57610f9382611b96565b633b9aca0092915050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526007602052604081205415610f9857610f9382611ba2565b5f6108723384846116ee565b5f600a546111a36114cf565b10156111c65750600b5473ffffffffffffffffffffffffffffffffffffffff1690565b50600c5473ffffffffffffffffffffffffffffffffffffffff1690565b5f61087233848461177c565b5f6109be8383611bcf565b5f611206878787611c07565b90505f6112168287878787611d0b565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040902054909150808803611286576040517f56d8d10600000000000000000000000000000000000000000000000000000000815260048101899052602481018290526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912090820190556112bc828a61195f565b505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611336576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2a81611e8f565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526001602052604081205490611372898989858a611ea1565b90505f6113828288888888611d0b565b90508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614611409576040517fefe0e68600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808c1660048301528216602482015260440161127d565b73ffffffffffffffffffffffffffffffffffffffff8a165f90815260016020819052604090912090840190556114408a8a8a611462565b50505050505050505050565b5f6109be8383611f1f565b5f6109be8284613440565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6114de600c6213c680613497565b6114e89043613497565b610971906001613440565b5f826001165f036115045781611506565b835b90505b60019290921c9182156109be57816115218580613453565b61152b9190613497565b9350600183161561150957816115418583613453565b61154b9190613497565b9050611509565b5f6109716004611fa8565b80516060908067ffffffffffffffff81111561157b5761157b6134f4565b6040519080825280602002602001820160405280156115a4578160200160208202803683370190505b5084549092508015806115b5575081155b156115c1575050610876565b5f846115cc84613521565b935083815181106115df576115df613555565b602002602001015190505b5f611608876115f885613521565b9450845f91825260209091200190565b805490915061ffff165b8281116116dc5781548651620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169087908790811061165757611657613555565b602002602001018181525050845f03611674575050505050610876565b5f8761167f87613521565b9650868151811061169257611692613555565b602002602001015190508381106116d5576040517faeb1ed3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250611612565b50505f82116115ea5750505092915050565b805f03611727576040517f28bd1f0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084165f90815260036020908152604080832093861683529290522054600181016117675750505050565b6117768484610bd0858561342d565b50505050565b61178583612023565b61178e82612023565b6110cc8383836120a4565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526007602052604081206109be90836120c9565b6040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000091633b9aca00917f000000000000000000000000000000000000000000000000000000000000000090911690634ee2cd7e90604401602060405180830381865afa158015611884573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a89190613582565b6118b29190613453565b6109be9190613497565b5f6118c78383612139565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526005602052604090206118f590846120c9565b6109be9190613440565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600660205260408120610876906119309061227f565b836122c2565b5f6119426002836134e1565b60011492915050565b5f436119556122eb565b610971919061342d565b61196882612023565b61197181612023565b61197b8282612307565b5050565b5f61198982612322565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526005602052604090206119b690611fa8565b6108769190613440565b60605f6119cd848461342d565b6119d8906001613440565b90508067ffffffffffffffff8111156119f3576119f36134f4565b604051908082528060200260200182016040528015611a1c578160200160208202803683370190505b508554909250801580611a2d575081155b15611a395750506109be565b835b5f611a49886115f885613521565b805490915061ffff165b828111611ad05781548651620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690879087908110611a9857611a98613555565b602002602001018181525050845f03611ab55750505050506109be565b611abe85613521565b9450611ac983613521565b9250611a53565b50505f8211611a3b575050509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790525f90611b7a908690612334565b95945050505050565b611b8c82612023565b61197b82826123e8565b5f6108766004836120c9565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812061087690611fa8565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206109be90611c019084612403565b846122c2565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610dcc9060a0015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f84421115611d4f576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810186905242602482015260440161127d565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180611d9057508360ff16601b14158015611d9057508360ff16601c14155b15611dc7576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611e17573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b7a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e9881612023565b610f2a81612469565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff8088169282019290925290851660608201526080810184905260a0810183905260c081018290525f90611f159060e001611c67565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081208054808303611f56575f92505050610876565b5f611f7483611f6484613521565b9350835f91825260209091200190565b805490915061ffff1685811115611f8c575050611f99565b8514935061087692505050565b5f8111611f5657505092915050565b80545f908015611ffa57611fce83611fc160018461342d565b5f91825260209091200190565b546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611ffc565b5f5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260056020526040902054156120505750565b5f61207b827f00000000000000000000000000000000000000000000000000000000000000006117c7565b9050805f03612088575050565b61209582611457836124f6565b50506117768261145783612534565b6120ac6125c4565b6120b58361260d565b6120be8261260d565b6110cc838383612656565b81545f908082036120dd575f915050610876565b5f6120eb85611f6484613521565b805490915061ffff16841061212a57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506108769050565b505f81116120dd575092915050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812054810361216b57505f610876565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260056020526040812061219990846120c9565b9050805f036121ab575f915050610876565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526006602052604081206121e3906121dd9086612403565b866122c2565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260096020526040812091925090612215908661277f565b612220906001613440565b90505b8481116122765761223381611936565b15612266576122428282611f1f565b15612266576122596122548585613440565b6127cb565b6122639085613440565b93505b61226f816134aa565b9050612223565b50505092915050565b80545f9080156122ba5761229883611fc160018461342d565b5462010000900473ffffffffffffffffffffffffffffffffffffffff166109be565b5f9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316156122e557826109be565b50919050565b5f6109716122f76114cf565b612302906001613440565b612803565b61230f6125c4565b6123188261260d565b61197b8282612827565b5f6108768261232f6114cf565b612139565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61235857505f610876565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161237f9190613599565b5f604051808303815f865af19150503d805f81146123b8576040519150601f19603f3d011682016040523d82523d5f602084013e6123bd565b606091505b509092509050818015610dcc575080511580610dcc575080806020019051810190610dcc91906135b4565b6123f06125c4565b6123f98261260d565b61197b828261289b565b81545f90808203612417575f915050610876565b5f61242585611f6484613521565b805490915061ffff16841061245a575462010000900473ffffffffffffffffffffffffffffffffffffffff1691506108769050565b505f8111612417575092915050565b61247161290f565b61247a81612950565b6124b0576040517f22ce1a0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f9081526007602052604081206124e19061225490611fa8565b90506124ec81612980565b611776828261298e565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260056020526040812081906125279085856129a9565b915091505b935093915050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040812081906125659085856129a9565b604080518381526020810183905292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a2935093915050565b6125d46125cf6114cf565b611936565b1561260b576040517f66f21c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61261f8161261a83612322565b612bd5565b505073ffffffffffffffffffffffffffffffffffffffff81165f90815260096020526040902061197b906126516114cf565b612be4565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126bb576040517fbf2f44f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271a91815260200190565b60405180910390a35f8061272e8584612c6c565b915091505f8061274f612740886118ff565b61274a858761342d565b612c7b565b90925090506127628661261a858761342d565b50506112bc612770876118ff565b61277a838561342d565b61298e565b81545f90808203612793575f915050610876565b5f6127a185611f6484613521565b805490915061ffff168481116127bb579250610876915050565b50505f8111612793575092915050565b5f6127106127f97f000000000000000000000000000000000000000000000000000000000000000084613453565b6108769190613497565b5f612812600c6213c680613497565b61281d60018461342d565b6108769190613453565b5f6128328383612c8a565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526005602052604081209192509061286390611fa8565b9050805f036128725750505050565b5f8061287e8484612c7b565b90925090506128918561277a838561342d565b5050505050505050565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36128f28282612bd5565b50506128fd81612980565b611776612909836118ff565b8261298e565b61291a6125cf6114cf565b61260b576040517f90bfab2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f908152600860205260408120610876906126516114cf565b6110cc6004611457836129a9565b5f8061299d8461145785612534565b915091505b9250929050565b5f805f6129b46114cf565b86549091505f819003612a83577dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115612a19576040517fb5b0cde400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805180820190915261ffff91821681527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80861660208084019182528954600181018b555f8b81529182209451925190931662010000029190941617910155915082905061252c565b5f612a9388611fc160018561342d565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612acd858763ffffffff8a16565b93507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115612b27576040517fb5b0cde400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805461ffff16831115612b9a576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612bca565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b5f8061299d84611457856124f6565b81545f90801580612c075750612bff84611fc160018461342d565b5461ffff1683115b91508115612c655760408051602080820190925261ffff858116825286546001810188555f8881529390932091519190920180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016919092161790555b5092915050565b5f8061299d84612fc0856124f6565b5f8061299d84612fc085612534565b5f612c9582846122c2565b91505f612ca28385612fcb565b90505f612cad6114cf565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260066020526040812080549293509190819003612dcb578673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612d44576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805180820190915261ffff928316815273ffffffffffffffffffffffffffffffffffffffff938416602080830191825283546001810185555f94855293209151919092018054925190941662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169216919091171790555081610876565b5f612ddb83611fc160018561342d565b8054909150612e069062010000900473ffffffffffffffffffffffffffffffffffffffff16896122c2565b95508673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e6d576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4805461ffff16841115612f71576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808816602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009091169390921692909217179055612fb5565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8716021781555b505050505092915050565b5f6109be828461342d565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461300557826109be565b505f92915050565b5f5b8381101561302757818101518382015260200161300f565b50505f910152565b602081525f825180602084015261304d81604085016020870161300d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146130a2575f80fd5b919050565b5f80604083850312156130b8575f80fd5b6130c18361307f565b946020939093013593505050565b5f8083601f8401126130df575f80fd5b50813567ffffffffffffffff8111156130f6575f80fd5b6020830191508360208260051b85010111156129a2575f80fd5b5f8060208385031215613121575f80fd5b823567ffffffffffffffff811115613137575f80fd5b613143858286016130cf565b90969095509350505050565b602080825282518282018190525f9190848201906040850190845b818110156131865783518352928401929184019160010161316a565b50909695505050505050565b5f805f606084860312156131a4575f80fd5b6131ad8461307f565b92506131bb6020850161307f565b9150604084013590509250925092565b5f602082840312156131db575f80fd5b6109be8261307f565b5f805f604084860312156131f6575f80fd5b6131ff8461307f565b9250602084013567ffffffffffffffff81111561321a575f80fd5b613226868287016130cf565b9497909650939450505050565b5f60208284031215613243575f80fd5b5035919050565b5f806040838503121561325b575f80fd5b50508035926020909101359150565b5f806040838503121561327b575f80fd5b8235915061328b6020840161307f565b90509250929050565b5f805f606084860312156132a6575f80fd5b6132af8461307f565b95602085013595506040909401359392505050565b803560ff811681146130a2575f80fd5b5f805f805f8060c087890312156132e9575f80fd5b6132f28761307f565b9550602087013594506040870135935061330e606088016132c4565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a03121561333e575f80fd5b6133478861307f565b96506133556020890161307f565b95506040880135945060608801359350613371608089016132c4565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561339e575f80fd5b6133a78361307f565b915061328b6020840161307f565b600181811c908216806133c957607f821691505b6020821081036122e5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561087657610876613400565b8082018082111561087657610876613400565b808202811582820484141761087657610876613400565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826134a5576134a561346a565b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134da576134da613400565b5060010190565b5f826134ef576134ef61346a565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8161352f5761352f613400565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215613592575f80fd5b5051919050565b5f82516135aa81846020870161300d565b9190910192915050565b5f602082840312156135c4575f80fd5b815180151581146109be575f80fdfea264697066735822122064d993334ef498dacd0a5064a27e816b92eab432010e53f63bda9bb40eaf09e864736f6c63430008150033a2646970667358221220da54715a130846021f5eb0729a17b9bf88dbfef05ac11b09d74293b249e32ca764736f6c63430008150033" } diff --git a/bytecode/Registrar.json b/bytecode/Registrar.json new file mode 100644 index 00000000..913ff8d2 --- /dev/null +++ b/bytecode/Registrar.json @@ -0,0 +1 @@ +{ "bytecode": "0x61014060405234801562000011575f80fd5b506040516200185938038062001859833981016040819052620000349162000656565b6001600160a01b03861660c081905262000061576040516333927a8160e21b815260040160405180910390fd5b6001600160a01b03851660808190526200008e57604051635788a27960e11b815260040160405180910390fd5b6001600160a01b03841660a0819052620000bb57604051631412fc3f60e11b815260040160405180910390fd5b5f866001600160a01b0316638df3227f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000f9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200011f9190620006d3565b6001600160a01b0316610100816001600160a01b03168152509050866001600160a01b031663f294bd926040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000177573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019d9190620006d3565b6001600160a01b0316610120816001600160a01b031681525050866001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021a9190620006d3565b6001600160a01b031660e0816001600160a01b031681525050620002a6858888846001600160a01b0316638933c81b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000277573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029d9190620006d3565b888789620002f1565b600180546001600160a01b03199081166001600160a01b03938416179091555f805482169383169390931790925560028054909216921691909117905550620006f695505050505050565b5f805f808a6001600160a01b031663a852d90b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000332573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003589190620006d3565b90505f8a6001600160a01b031663a852d90b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000398573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003be9190620006d3565b6040516306bc04c760e21b81526001600160a01b038481166004830152808316602483015261ffff8a166044830152919250908b1690631af0131c906064016020604051808303815f875af11580156200041a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004409190620006d3565b604051638489e17960e01b81526001600160a01b03848116600483015280831660248301528b81166044830152606482018990526103e86084830152919550908c1690638489e1799060a4016020604051808303815f875af1158015620004a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004cf9190620006d3565b9450846001600160a01b0316816001600160a01b0316146200051c5760405163a20b5bb960e01b81526001600160a01b038084166004830152841660248201526044015b60405180910390fd5b60405163d9181cd360e01b81526001600160a01b0386811660048301528a8116602483015289811660448301528d169063d9181cd3906064016020604051808303815f875af115801562000572573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005989190620006d3565b9250826001600160a01b0316826001600160a01b031614620005e157604051630f51530760e21b81526001600160a01b0380841660048301528416602482015260440162000513565b826001600160a01b0316846001600160a01b0316866001600160a01b03167f07b916206d85e3007580ea248308d61c650881ab971846392abaca0fcb0a65a160405160405180910390a450509750975097945050505050565b80516001600160a01b038116811462000651575f80fd5b919050565b5f805f805f8060c087890312156200066c575f80fd5b62000677876200063a565b955062000687602088016200063a565b945062000697604088016200063a565b9350620006a7606088016200063a565b92506080870151915060a087015161ffff81168114620006c5575f80fd5b809150509295509295509295565b5f60208284031215620006e4575f80fd5b620006ef826200063a565b9392505050565b60805160a05160c05160e05161010051610120516110ff6200075a5f395f6102f501525f81816101da01526108d101525f61033b01525f81816102ce015261044b01525f818161026e015261042a01525f818161018b015261046c01526110ff5ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c8063abf306a8116100ad578063d7d1c1c01161007d578063f294bd9211610063578063f294bd92146102f0578063f52c93c514610317578063fbfa77cf14610336575f80fd5b8063d7d1c1c0146102b6578063e94bb223146102c9575f80fd5b8063abf306a814610249578063af63a3e114610269578063b4d87a1214610290578063d48d8423146102a3575f80fd5b8063889eba3b116100e8578063889eba3b146101c25780638df3227f146101d55780638eaa6ac0146101fc5780639662ac5814610229575f80fd5b80632595f8cf146101195780634d6d7441146101415780635548917f146101865780636b8ab97d146101ad575b5f80fd5b61012c610127366004610e52565b61035d565b60405190151581526020015b60405180910390f35b6002546101619073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b6101c06101bb366004610ebe565b6103d6565b005b6101c06101d0366004610ed9565b610660565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b61021b61020a366004610ef9565b5f9081526003602052604090205490565b604051908152602001610138565b6001546101619073ffffffffffffffffffffffffffffffffffffffff1681565b61025c610257366004610f10565b6106a6565b6040516101389190610f4f565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b6101c061029e366004610f92565b610755565b6101c06102b1366004610f92565b6107c5565b61012c6102c4366004610f92565b610832565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b5f546101619073ffffffffffffffffffffffffffffffffffffffff1681565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b5f805b828110156103c957600160035f61039d8888888781811061038357610383610fc0565b90506020020160208101906103989190610ebe565b610859565b81526020019081526020015f2054146103b9575f9150506103cf565b6103c281610fed565b9050610360565b50600190505b9392505050565b6103de6108b9565b60025460405173ffffffffffffffffffffffffffffffffffffffff918216918316907fe8976d847f659630f781c6640855ac9944a66085a03e85fe827edb0bc3499a72905f90a26105fa7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008473ffffffffffffffffffffffffffffffffffffffff1663a72246876040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f89190611049565b5f54604080517fc0324da10000000000000000000000000000000000000000000000000000000081529051899273ffffffffffffffffffffffffffffffffffffffff169163c0324da19160048083019260209291908290030181865afa158015610564573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105889190611064565b8773ffffffffffffffffffffffffffffffffffffffff1663c27cabb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f59190611085565b61092a565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091555f80548216938316939093179092556002805490921692169190911790555050565b610668610d94565b5f8281526003602052604080822083905551829184917fe50cd7681ef9290dfd8130fd24ac0ccccd3d35e0d3b6e009f3d27343973253de9190a35050565b60608167ffffffffffffffff8111156106c1576106c161109c565b6040519080825280602002602001820160405280156106ea578160200160208202803683370190505b5090505f5b8281101561074e5760035f85858481811061070c5761070c610fc0565b9050602002013581526020019081526020015f205482828151811061073357610733610fc0565b602090810291909101015261074781610fed565b90506106ef565b5092915050565b61075d610d94565b600160035f61076c8585610859565b81526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff16827f56573e227f8e2cfaf9c513a7e1586b18527b6f4010b703025003741b6a451ad560405160405180910390a35050565b6107cd610d94565b60035f6107da8484610859565b81526020019081526020015f205f90558073ffffffffffffffffffffffffffffffffffffffff16827f72e193b20c528dc6c7ac5d8f5bc4354aa22b592c0fdca040fa926c2ff90534f760405160405180910390a35050565b5f60016003826108428686610859565b81526020019081526020015f205414905092915050565b5f828260405160200161089b92919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b60405160208183030381529060405280519060200120905092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610928576040517fd840c8b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f805f808a73ffffffffffffffffffffffffffffffffffffffff1663a852d90b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611049565b90505f8a73ffffffffffffffffffffffffffffffffffffffff1663a852d90b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611049565b6040517f1af0131c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152808316602483015261ffff8a166044830152919250908b1690631af0131c906064016020604051808303815f875af1158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611049565b6040517f8489e17900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015280831660248301528b81166044830152606482018990526103e86084830152919550908c1690638489e1799060a4016020604051808303815f875af1158015610b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b629190611049565b94508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bee576040517fa20b5bb900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152841660248201526044015b60405180910390fd5b6040517fd9181cd300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528a8116602483015289811660448301528d169063d9181cd3906064016020604051808303815f875af1158015610c69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8d9190611049565b92508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610d14576040517f3d454c1c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015284166024820152604401610be5565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f07b916206d85e3007580ea248308d61c650881ab971846392abaca0fcb0a65a160405160405180910390a450509750975097945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314801590610dd357505f5473ffffffffffffffffffffffffffffffffffffffff163314155b15610928576040517fd9f239da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8083601f840112610e1a575f80fd5b50813567ffffffffffffffff811115610e31575f80fd5b6020830191508360208260051b8501011115610e4b575f80fd5b9250929050565b5f805f60408486031215610e64575f80fd5b83359250602084013567ffffffffffffffff811115610e81575f80fd5b610e8d86828701610e0a565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610ebb575f80fd5b50565b5f60208284031215610ece575f80fd5b81356103cf81610e9a565b5f8060408385031215610eea575f80fd5b50508035926020909101359150565b5f60208284031215610f09575f80fd5b5035919050565b5f8060208385031215610f21575f80fd5b823567ffffffffffffffff811115610f37575f80fd5b610f4385828601610e0a565b90969095509350505050565b602080825282518282018190525f9190848201906040850190845b81811015610f8657835183529284019291840191600101610f6a565b50909695505050505050565b5f8060408385031215610fa3575f80fd5b823591506020830135610fb581610e9a565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611042577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f60208284031215611059575f80fd5b81516103cf81610e9a565b5f60208284031215611074575f80fd5b815161ffff811681146103cf575f80fd5b5f60208284031215611095575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea264697066735822122026b62d01dd000200e233da7d0067e01f9535cf3ff2a6445c8806ab4eb1a52ad264736f6c63430008150033" } diff --git a/bytecode/StandardGovernor.json b/bytecode/StandardGovernor.json new file mode 100644 index 00000000..a805f9a8 --- /dev/null +++ b/bytecode/StandardGovernor.json @@ -0,0 +1 @@ +{ "bytecode": "0x61018060405234801562000011575f80fd5b50604051620042aa380380620042aa833981016040819052620000349162000309565b60408051808201909152601081526f29ba30b73230b93223b7bb32b93737b960811b60208201528989827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6200008c83826200044c565b6040516200009b919062000514565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506001600160a01b03821660a0819052620001315760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660c08190526200015e576040516316d3e4a360e01b815260040160405180910390fd5b5050506001600160a01b03871660e08190526200018e576040516338a401b960e21b815260040160405180910390fd5b6001600160a01b038616610120819052620001bc5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038516610140819052620001ea57604051631fb9659f60e21b815260040160405180910390fd5b6001600160a01b0383166101008190526200021857604051630306120160e01b815260040160405180910390fd5b620002238462000241565b6200022e82620002b2565b61016052506200058e9650505050505050565b6001600160a01b0381166200026957604051634e71231360e11b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b60058190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b80516001600160a01b038116811462000304575f80fd5b919050565b5f805f805f805f805f6101208a8c03121562000323575f80fd5b6200032e8a620002ed565b98506200033e60208b01620002ed565b97506200034e60408b01620002ed565b96506200035e60608b01620002ed565b95506200036e60808b01620002ed565b94506200037e60a08b01620002ed565b93506200038e60c08b01620002ed565b925060e08a015191506101008a015190509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003d557607f821691505b602082108103620003f457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000447575f81815260208120601f850160051c81016020861015620004225750805b601f850160051c820191505b8181101562000443578281556001016200042e565b5050505b505050565b81516001600160401b03811115620004685762000468620003ac565b6200048081620004798454620003c0565b84620003fa565b602080601f831160018114620004b6575f84156200049e5750858301515b5f19600386901b1c1916600185901b17855562000443565b5f85815260208120601f198616915b82811015620004e657888601518255948401946001909101908401620004c5565b50858210156200050457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8083546200052381620003c0565b600182811680156200053e5760018114620005545762000582565b60ff198416875282151583028701945062000582565b875f526020805f205f5b85811015620005795781548a8201529084019082016200055e565b50505082870194505b50929695505050505050565b60805160a05160c05160e05161010051610120516101405161016051613c65620006455f395f81816107b201526119f801525f8181610b1001526119ae01525f8181610822015261210501525f8181610b930152610d7001525f8181610b4201526114d301525f818161041f015281816110300152818161141d0152818161195501526127ef01525f81816104d1015281816111f6015281816120be01526122a201525f8181610522015261181d0152613c655ff3fe60806040526004361061033a575f3560e01c806383c6a8d3116101b2578063c7f758a8116100f2578063eb9019d411610092578063f294bd921161006d578063f294bd9214610b02578063f52c93c514610b34578063f8ce560a14610b66578063fbfa77cf14610b85575f80fd5b8063eb9019d414610a91578063efefad0c14610ab0578063f046c64614610acf575f80fd5b8063d11d19c2116100cd578063d11d19c2146109f9578063d48d842314610a2c578063dd4e2ba514610a4b578063deaaa7cc14610a5e575f80fd5b8063c7f758a814610989578063c9167e6c146109bb578063cee87708146109da575f80fd5b80639b9e9cf81161015d578063c01f9e3711610138578063c01f9e371461090c578063c27cabb514610941578063c2ee3a0814610955578063c59057e41461096a575f80fd5b80639b9e9cf8146108a4578063a7224687146108c3578063b4d87a12146108ed575f80fd5b80638df3227f1161018d5780638df3227f146108145780638e9d8c341461084657806391ddadf414610879575f80fd5b806383c6a8d3146107a4578063889eba3b146107d65780638968eb07146107f5575f80fd5b80633bccf4fd1161027d57806356781388116102285780637b3c71d3116102035780637b3c71d3146106fa5780637d5e81e2146107195780637ecebe00146107385780637fcfb16414610779575f80fd5b8063567813881461066e57806364a38bf91461068d57806379cd4837146106ac575f80fd5b8063438596321161025857806343859632146105b95780634bf5d7e91461060a5780634d8e08251461064f575f80fd5b80633bccf4fd1461055a5780633e4f49e614610579578063414408e5146105a5575f80fd5b8063230bcb37116102e85780632b20e397116102c35780632b20e397146104c35780632d63f693146104f55780633644e515146105145780633932abb114610546575f80fd5b8063230bcb371461046257806324b2c7b3146104915780632656227d146104b0575f80fd5b8063143489d011610318578063143489d0146103a2578063160d66ae14610411578063189abd1914610443575f80fd5b806302a251a31461033e57806306fdde031461036057806310bf506814610381575b5f80fd5b348015610349575f80fd5b5060015b6040519081526020015b60405180910390f35b34801561036b575f80fd5b50610374610bb7565b6040516103579190612c4f565b34801561038c575f80fd5b506103a061039b366004612c61565b610c46565b005b3480156103ad575f80fd5b506103ec6103bc366004612c61565b5f9081526002602052604090205465010000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610357565b34801561041c575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b34801561044e575f80fd5b506103a061045d366004612c61565b610c5a565b34801561046d575f80fd5b5061048161047c366004612ca0565b610d9c565b6040519015158152602001610357565b34801561049c575f80fd5b5061034d6104ab366004612d10565b610ddc565b61034d6104be36600461300b565b610df5565b3480156104ce575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610500575f80fd5b5061034d61050f366004612c61565b610e7f565b34801561051f575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061034d565b348015610551575f80fd5b5061034d610ea7565b348015610565575f80fd5b5061034d6105743660046130a5565b610ece565b348015610584575f80fd5b50610598610593366004612c61565b610ef9565b6040516103579190613155565b3480156105b0575f80fd5b506103a0610fdd565b3480156105c4575f80fd5b506104816105d3366004613163565b5f91825260036020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b348015610615575f80fd5b5060408051808201909152600a81527f6d6f64653d65706f6368000000000000000000000000000000000000000000006020820152610374565b34801561065a575f80fd5b5061034d61066936600461318d565b6110ab565b348015610679575f80fd5b5061034d6106883660046131bf565b6110b5565b348015610698575f80fd5b5061034d6106a73660046131e0565b6110c9565b3480156106b7575f80fd5b5061034d6106c6366004613163565b5f91825260086020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205490565b348015610705575f80fd5b5061034d610714366004613285565b6110e0565b348015610724575f80fd5b5061034d6107333660046132cf565b6110f6565b348015610743575f80fd5b5061034d610752366004613388565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610784575f80fd5b5061034d610793366004612c61565b5f9081526007602052604090205490565b3480156107af575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061034d565b3480156107e1575f80fd5b506103a06107f03660046133a1565b6111b8565b348015610800575f80fd5b5061034d61080f3660046133c1565b611267565b34801561081f575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610851575f80fd5b5061034d7f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff81565b348015610884575f80fd5b5061088d61128f565b60405165ffffffffffff9091168152602001610357565b3480156108af575f80fd5b5061034d6108be36600461344e565b61129d565b3480156108ce575f80fd5b5060045473ffffffffffffffffffffffffffffffffffffffff166103ec565b3480156108f8575f80fd5b506103a0610907366004613163565b6112c9565b348015610917575f80fd5b5061034d610926366004612c61565b5f9081526002602052604090205462010000900461ffff1690565b34801561094c575f80fd5b5060055461034d565b348015610960575f80fd5b5061034d61271081565b348015610975575f80fd5b5061034d61098436600461300b565b6112df565b348015610994575f80fd5b506109a86109a3366004612c61565b611302565b6040516103579796959493929190613502565b3480156109c6575f80fd5b506103a06109d5366004612ca0565b61137c565b3480156109e5575f80fd5b5061034d6109f436600461355e565b611396565b348015610a04575f80fd5b5061034d7f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f81565b348015610a37575f80fd5b506103a0610a46366004613163565b6113bd565b348015610a56575f80fd5b506060610374565b348015610a69575f80fd5b5061034d7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610a9c575f80fd5b5061034d610aab366004612ca0565b6113cf565b348015610abb575f80fd5b506103a0610aca3660046135da565b61148f565b348015610ada575f80fd5b5061034d7fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa3281565b348015610b0d575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610b3f575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610b71575f80fd5b5061034d610b80366004612c61565b505f90565b348015610b90575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b60605f8054610bc590613613565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf190613613565b8015610c3c5780601f10610c1357610100808354040283529160200191610c3c565b820191905f5260205f20905b815481529060010190602001808311610c1f57829003601f168201915b5050505050905090565b610c4e6114b0565b610c578161152f565b50565b5f610c6482610ef9565b90506006816007811115610c7a57610c7a6130ef565b14158015610c9a57506003816007811115610c9757610c976130ef565b14155b15610cdc57806040517f3c726c17000000000000000000000000000000000000000000000000000000008152600401610cd39190613155565b60405180910390fd5b5f82815260066020908152604080832060018101805482547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909355949055905183815273ffffffffffffffffffffffffffffffffffffffff90911691829186917f847147bb46f853e52eedf4997e56154050d17c103e1bfe61a185f02a7b6b66c0910160405180910390a3610d95817f00000000000000000000000000000000000000000000000000000000000000008461156a565b5050505050565b5f818152600760209081526040808320546008835281842073ffffffffffffffffffffffffffffffffffffffff8716855290925290912054145b92915050565b5f610dea3388888888611648565b979650505050505050565b5f3415610e2e576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001610e396116af565b610e439190613691565b9050610e75845f81518110610e5a57610e5a6136a4565b602002602001015182600184610e709190613691565b6116d3565b9695505050505050565b5f81815260026020526040812054610e9d9060019061ffff166136d1565b61ffff1692915050565b5f610eb8610eb36116af565b611768565b610ec3576001610ec6565b60025b60ff16905090565b5f610eee610ee7610edf888861177d565b868686611864565b8787611892565b509695505050505050565b5f8181526002602052604081208054640100000000900460ff1615610f215750600792915050565b5f610f2a6116af565b825490915061ffff80821691620100009004165f829003610f77576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81831015610f8a57505f95945050505050565b808311610f9d5750600195945050505050565b8360010154846002015411610fb85750600395945050505050565b610fc38160026136f3565b831115610fd1576006610e75565b60049695505050505050565b60075f610fe86116af565b81526020019081526020015f20545f0361102e576040517f37e0d8fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414408e56040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611093575f80fd5b505af11580156110a5573d5f803e3d5ffd5b50505050565b5f610dd682611aaf565b5f6110c1338484611892565b509392505050565b5f6110d73386868686611648565b95945050505050565b5f6110ec338686611892565b5095945050505050565b5f8061110486868686611ad3565b5f81815260076020526040812080549395509193506001926111279084906136f3565b909155505060045460055460408051808201825273ffffffffffffffffffffffffffffffffffffffff93841680825260208083018581525f8981526006909252939020915182547fffffffffffffffffffffffff000000000000000000000000000000000000000016951694909417815590516001909101556111ac82333084611f57565b50505050949350505050565b6111c0611fb7565b6040517f889eba3b00000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063889eba3b906044015b5f604051808303815f87803b15801561124d575f80fd5b505af115801561125f573d5f803e3d5ffd5b505050505050565b5f61128361127a610edf8a8a8a8a611ff0565b89898989611648565b98975050505050505050565b5f6112986116af565b905090565b5f6112bb6112b2610edf8c8c8c8c8c8c61202f565b8b8b8b8b611648565b9a9950505050505050505050565b6112d1611fb7565b6112db8282612072565b5050565b5f6110d7835f815181106112f5576112f56136a4565b6020026020010151611aaf565b5f818152600260205260408120805461ffff808216936201000083049091169264010000000090920460ff169181908190819061133e89610ef9565b600182015460028301549254999b989a509698909791955065010000000000900473ffffffffffffffffffffffffffffffffffffffff169350915050565b6113846120ed565b61138d8261215c565b6112db8161152f565b5f6113b06113a9610edf8a8a8a8a612217565b8989611892565b5098975050505050505050565b6113c5611fb7565b6112db8282612256565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611464573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114889190613706565b9392505050565b611497611fb7565b6114a18383612072565b6114ab8382612256565b505050565b3330148015906114f657503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b1561152d576040517fec4acc1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60058190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290525f906116409085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526122d1565b949350505050565b5f805b848110156110ec5761169c87878784818110611669576116696136a4565b90506020020135868685818110611682576116826136a4565b9050602002016020810190611697919061371d565b611892565b5091506116a881613736565b905061164b565b5f6116be600c6213c68061379a565b6116c8904361379a565b6112989060016136f3565b5f341561170c576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818310611736576117288484611721816137ad565b9550612385565b9050805f036114885761170c565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6117746002836137e1565b60011492915050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f90611488906080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f6110d7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868686612417565b5f8061189f85858561259b565b90925090505f6118ad6116af565b5f81815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915281208054929350909182906118ed90613736565b91829055505f838152600760205260409020549091508114611910575050611aa7565b6040517fc580b26900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c580b269906024015f604051808303815f87803b158015611996575f80fd5b505af11580156119a8573d5f803e3d5ffd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f19886119f2866127be565b611a1c887f00000000000000000000000000000000000000000000000000000000000000006137f4565b611a26919061379a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015f604051808303815f87803b158015611a8e575f80fd5b505af1158015611aa0573d5f803e3d5ffd5b5050505050505b935093915050565b5f610dd682611abc610ea7565b611ac46116af565b611ace91906136f3565b61286d565b5f808551600114611b10576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16865f81518110611b3957611b396136a4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600114611bc9576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f81518110611bdb57611bdb6136a4565b60200260200101515f14611c1b576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8351600114611c56576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c78845f81518110611c6b57611c6b6136a4565b60200260200101516128be565b611c80610ea7565b611c886116af565b611c9291906136f3565b9050611cb7845f81518110611ca957611ca96136a4565b60200260200101518261286d565b5f8181526002602052604090205490925061ffff1615611d03576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516101008101825261ffff83811680835260208084019182525f84860181815233606087019081526080870183815260a0880184815260c0890185815260e08a018681528d87526002978890529a862099518a54985195519451935192518a167b01000000000000000000000000000000000000000000000000000000027fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff938b1679010000000000000000000000000000000000000000000000000002939093167fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff90951665010000000000027fffffffffffffff0000000000000000000000000000000000000000ffffffffff96151564010000000002969096167fffffffffffffff000000000000000000000000000000000000000000ffffffff978c1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909b1692909b169190911798909817949094169790971791909117169390931793909317845590516001840155925191909201558190507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0833389898b5167ffffffffffffffff811115611ef857611ef8612da3565b604051908082528060200260200182016040528015611f2b57816020015b6060815260200190600190039081611f165790505b508a88888c604051611f4599989796959493929190613897565b60405180910390a15094509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290525f906110d79086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016115be565b33301461152d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110d77fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa325f1b868686866040516020016117c09594939291906139e6565b5f610dea7f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff5f1b8888888888886040516020016117c09796959493929190613a59565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401611236565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461152d576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166121a9576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b5f6110d77f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f5f1b868686866040516020016117c0959493929190613b5d565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401611236565b5f73ffffffffffffffffffffffffffffffffffffffff83163b6122f557505f610dd6565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161231c9190613b85565b5f604051808303815f865af19150503d805f8114612355576040519150601f19603f3d011682016040523d82523d5f602084013e61235a565b606091505b5090925090508180156116405750805115806116405750808060200190518101906116409190613ba0565b5f6123908383612a7f565b5f81815260066020908152604080832060018101805482547fffffffffffffffffffffffff000000000000000000000000000000000000000081169093559085905560029093529220549293509173ffffffffffffffffffffffffffffffffffffffff9182169161240e91839165010000000000909104168461156a565b50505092915050565b5f8442111561245b576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101869052426024820152604401610cd3565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082118061249c57508360ff16601b1415801561249c57508360ff16601c14155b156124d3576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015612523573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166110d7576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526002602052604081208190816125b486610ef9565b905060018160078111156125ca576125ca6130ef565b1461260357806040517ff1a25b13000000000000000000000000000000000000000000000000000000008152600401610cd39190613155565b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915290205460ff161561266c576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915582546126d6919061ffff166136d1565b61ffff1692506126e687846113cf565b93505f8560ff1660018111156126fe576126fe6130ef565b600181111561270f5761270f6130ef565b036127325783826001015f82825461272791906136f3565b9091555061274b9050565b83826002015f82825461274591906136f3565b90915550505b6040805187815260ff871660208201529081018590526080606082018190525f9082015273ffffffffffffffffffffffffffffffffffffffff8816907fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49060a00160405180910390a25050935093915050565b6040517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063981b24d090602401602060405180830381865afa158015612849573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd69190613706565b5f8282604051602001612881929190613bbf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f6128c882613be0565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4d87a12000000000000000000000000000000000000000000000000000000001480159061295e57507fffffffff0000000000000000000000000000000000000000000000000000000081167fefefad0c0000000000000000000000000000000000000000000000000000000014155b80156129ac57507fffffffff0000000000000000000000000000000000000000000000000000000081167fd48d84230000000000000000000000000000000000000000000000000000000014155b80156129fa57507fffffffff0000000000000000000000000000000000000000000000000000000081167f10bf50680000000000000000000000000000000000000000000000000000000014155b8015612a4857507fffffffff0000000000000000000000000000000000000000000000000000000081167f889eba3b0000000000000000000000000000000000000000000000000000000014155b156112db576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612a8a838361286d565b5f81815260026020526040902080549192509061ffff168314612ab0575f915050610dd6565b6004612abb83610ef9565b6007811115612acc57612acc6130ef565b14612ada575f915050610dd6565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612b399084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612b689190613b85565b5f604051808303815f865af19150503d805f8114612ba1576040519150601f19603f3d011682016040523d82523d5f602084013e612ba6565b606091505b50915091508161240e57806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401610cd39190612c4f565b5f5b83811015612bfe578181015183820152602001612be6565b50505f910152565b5f8151808452612c1d816020860160208601612be4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6114886020830184612c06565b5f60208284031215612c71575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9b575f80fd5b919050565b5f8060408385031215612cb1575f80fd5b612cba83612c78565b946020939093013593505050565b5f8083601f840112612cd8575f80fd5b50813567ffffffffffffffff811115612cef575f80fd5b6020830191508360208260051b8501011115612d09575f80fd5b9250929050565b5f805f805f8060608789031215612d25575f80fd5b863567ffffffffffffffff80821115612d3c575f80fd5b612d488a838b01612cc8565b90985096506020890135915080821115612d60575f80fd5b612d6c8a838b01612cc8565b90965094506040890135915080821115612d84575f80fd5b50612d9189828a01612cc8565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e1757612e17612da3565b604052919050565b5f67ffffffffffffffff821115612e3857612e38612da3565b5060051b60200190565b5f82601f830112612e51575f80fd5b81356020612e66612e6183612e1f565b612dd0565b82815260059290921b84018101918181019086841115612e84575f80fd5b8286015b84811015610eee57612e9981612c78565b8352918301918301612e88565b5f82601f830112612eb5575f80fd5b81356020612ec5612e6183612e1f565b82815260059290921b84018101918181019086841115612ee3575f80fd5b8286015b84811015610eee5780358352918301918301612ee7565b5f67ffffffffffffffff831115612f1757612f17612da3565b612f4860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612dd0565b9050828152838383011115612f5b575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112612f80575f80fd5b61148883833560208501612efe565b5f82601f830112612f9e575f80fd5b81356020612fae612e6183612e1f565b82815260059290921b84018101918181019086841115612fcc575f80fd5b8286015b84811015610eee57803567ffffffffffffffff811115612fef575f8081fd5b612ffd8986838b0101612f71565b845250918301918301612fd0565b5f805f806080858703121561301e575f80fd5b843567ffffffffffffffff80821115613035575f80fd5b61304188838901612e42565b95506020870135915080821115613056575f80fd5b61306288838901612ea6565b94506040870135915080821115613077575f80fd5b5061308487828801612f8f565b949793965093946060013593505050565b803560ff81168114612c9b575f80fd5b5f805f805f60a086880312156130b9575f80fd5b853594506130c960208701613095565b93506130d760408701613095565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60088110613151577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610dd6828461311c565b5f8060408385031215613174575f80fd5b8235915061318460208401612c78565b90509250929050565b5f6020828403121561319d575f80fd5b813567ffffffffffffffff8111156131b3575f80fd5b61164084828501612f71565b5f80604083850312156131d0575f80fd5b8235915061318460208401613095565b5f805f80604085870312156131f3575f80fd5b843567ffffffffffffffff8082111561320a575f80fd5b61321688838901612cc8565b9096509450602087013591508082111561322e575f80fd5b5061323b87828801612cc8565b95989497509550505050565b5f8083601f840112613257575f80fd5b50813567ffffffffffffffff81111561326e575f80fd5b602083019150836020828501011115612d09575f80fd5b5f805f8060608587031215613298575f80fd5b843593506132a860208601613095565b9250604085013567ffffffffffffffff8111156132c3575f80fd5b61323b87828801613247565b5f805f80608085870312156132e2575f80fd5b843567ffffffffffffffff808211156132f9575f80fd5b61330588838901612e42565b9550602087013591508082111561331a575f80fd5b61332688838901612ea6565b9450604087013591508082111561333b575f80fd5b61334788838901612f8f565b9350606087013591508082111561335c575f80fd5b508501601f8101871361336d575f80fd5b61337c87823560208401612efe565b91505092959194509250565b5f60208284031215613398575f80fd5b61148882612c78565b5f80604083850312156133b2575f80fd5b50508035926020909101359150565b5f805f805f805f60a0888a0312156133d7575f80fd5b873567ffffffffffffffff808211156133ee575f80fd5b6133fa8b838c01612cc8565b909950975060208a0135915080821115613412575f80fd5b5061341f8a828b01612cc8565b9096509450613432905060408901613095565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215613466575f80fd5b893567ffffffffffffffff8082111561347d575f80fd5b6134898d838e01612cc8565b909b50995060208c01359150808211156134a1575f80fd5b6134ad8d838e01612cc8565b909950975060408c01359150808211156134c5575f80fd5b506134d28c828d01612cc8565b90965094506134e5905060608b01613095565b925060808a0135915060a08a013590509295985092959850929598565b61ffff888116825287166020820152851515604082015260e0810161352a606083018761311c565b8460808301528360a083015273ffffffffffffffffffffffffffffffffffffffff831660c083015298975050505050505050565b5f805f805f805f60c0888a031215613574575f80fd5b8735965061358460208901613095565b9550604088013567ffffffffffffffff81111561359f575f80fd5b6135ab8a828b01613247565b90965094506135be905060608901613095565b92506080880135915060a0880135905092959891949750929550565b5f805f606084860312156135ec575f80fd5b833592506135fc60208501612c78565b915061360a60408501612c78565b90509250925092565b600181811c9082168061362757607f821691505b60208210810361365e577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610dd657610dd6613664565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61ffff8281168282160390808211156136ec576136ec613664565b5092915050565b80820180821115610dd657610dd6613664565b5f60208284031215613716575f80fd5b5051919050565b5f6020828403121561372d575f80fd5b61148882613095565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361376657613766613664565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826137a8576137a861376d565b500490565b5f816137bb576137bb613664565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f826137ef576137ef61376d565b500690565b8082028115828204841417610dd657610dd6613664565b5f8151808452602080850194508084015f5b838110156138395781518752958201959082019060010161381d565b509495945050505050565b5f81518084526020808501808196508360051b810191508286015f5b8581101561388a578284038952613878848351612c06565b98850198935090840190600101613860565b5091979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e16828701528360408701528293508c5180845261014087019450828e0193505f5b818110156138f95784518316865294830194938301936001016138db565b50505050508281036060840152613910818a61380b565b905082810360808401526139248189613844565b905082810360a08401526139388188613844565b90508560c08401528460e08401528281036101008401526139598185612c06565b9c9b505050505050505050505050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613999575f80fd5b8260051b80836020870137939093016020019392505050565b8183525f60208085019450825f5b858110156138395760ff6139d383613095565b16875295820195908201906001016139c0565b858152606060208201525f6139ff606083018688613969565b82810360408401526112838185876139b2565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8781525f6020608081840152613a7360808401898b613969565b8381036040850152613a8681888a6139b2565b84810360608601528581529050818101600586901b82018301875f5b88811015613b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112613b02575f80fd5b8a01868101903567ffffffffffffffff811115613b1d575f80fd5b803603821315613b2b575f80fd5b613b36858284613a12565b958801959450505090850190600101613aa2565b50909d9c50505050505050505050505050565b85815284602082015260ff84166040820152608060608201525f610dea608083018486613a12565b5f8251613b96818460208701612be4565b9190910192915050565b5f60208284031215613bb0575f80fd5b81518015158114611488575f80fd5b604081525f613bd16040830185612c06565b90508260208301529392505050565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015613c275780818460040360031b1b83161693505b50505091905056fea2646970667358221220bd61bdd9666f52afd19cbf46f43d44c2dfc17128230806ebc4e10cf068d93ece64736f6c63430008150033" } diff --git a/bytecode/StandardGovernorDeployer.json b/bytecode/StandardGovernorDeployer.json new file mode 100644 index 00000000..26ea602d --- /dev/null +++ b/bytecode/StandardGovernorDeployer.json @@ -0,0 +1 @@ +{ "bytecode": "0x610100604052348015610010575f80fd5b5060405162004e0338038062004e0383398101604081905261003191610105565b6001600160a01b038416608081905261005d5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03831660a081905261008957604051630306120160e01b815260040160405180910390fd5b6001600160a01b03821660c08190526100b55760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03811660e08190526100e157604051631fb9659f60e21b815260040160405180910390fd5b50505050610156565b80516001600160a01b0381168114610100575f80fd5b919050565b5f805f8060808587031215610118575f80fd5b610121856100ea565b935061012f602086016100ea565b925061013d604086016100ea565b915061014b606086016100ea565b905092959194509250565b60805160a05160c05160e051614c58620001ab5f395f8181610141015261025801525f818160f7015261023701525f8181610169015261027a01525f8181608e015281816101a401526102140152614c585ff3fe608060405234801562000010575f80fd5b506004361062000084575f3560e01c8063a852d90b116200005f578063a852d90b1462000119578063affed0e01462000123578063f294bd92146200013b578063fbfa77cf1462000163575f80fd5b80632b20e39714620000885780638489e17914620000da5780638df3227f14620000f1575b5f80fd5b620000b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620000b0620000eb366004620008a3565b6200018b565b620000b07f000000000000000000000000000000000000000000000000000000000000000081565b620000b06200032c565b6200012c5f5481565b604051908152602001620000d1565b620000b07f000000000000000000000000000000000000000000000000000000000000000081565b620000b07f000000000000000000000000000000000000000000000000000000000000000081565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620001fc576040517f277a630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8081546200020b9062000928565b919050819055507f000000000000000000000000000000000000000000000000000000000000000086867f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000887f00000000000000000000000000000000000000000000000000000000000000008989604051620002a9906200086c565b73ffffffffffffffffffffffffffffffffffffffff998a1681529789166020890152958816604088015293871660608701529186166080860152851660a085015290931660c083015260e082019290925261010081019190915261012001604051809103905ff08015801562000321573d5f803e3d5ffd5b509695505050505050565b5f62000348305f54600162000342919062000962565b6200034d565b905090565b5f8115620007a757607f821115620006f75760ff821115620006215761ffff8211156200054b5762ffffff82111562000466576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b6040516020818303038152906040526200085b565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a016040516020818303038152906040526200085b565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b16603782015260390162000451565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380162000451565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370162000451565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b805160209091012090505b92915050565b6142aa806200097983390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200089e575f80fd5b919050565b5f805f805f60a08688031215620008b8575f80fd5b620008c3866200087a565b9450620008d3602087016200087a565b9350620008e3604087016200087a565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200095b576200095b620008fb565b5060010190565b80820180821115620008665762000866620008fb56fe61018060405234801562000011575f80fd5b50604051620042aa380380620042aa833981016040819052620000349162000309565b60408051808201909152601081526f29ba30b73230b93223b7bb32b93737b960811b60208201528989827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6200008c83826200044c565b6040516200009b919062000514565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506001600160a01b03821660a0819052620001315760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660c08190526200015e576040516316d3e4a360e01b815260040160405180910390fd5b5050506001600160a01b03871660e08190526200018e576040516338a401b960e21b815260040160405180910390fd5b6001600160a01b038616610120819052620001bc5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038516610140819052620001ea57604051631fb9659f60e21b815260040160405180910390fd5b6001600160a01b0383166101008190526200021857604051630306120160e01b815260040160405180910390fd5b620002238462000241565b6200022e82620002b2565b61016052506200058e9650505050505050565b6001600160a01b0381166200026957604051634e71231360e11b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b60058190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b80516001600160a01b038116811462000304575f80fd5b919050565b5f805f805f805f805f6101208a8c03121562000323575f80fd5b6200032e8a620002ed565b98506200033e60208b01620002ed565b97506200034e60408b01620002ed565b96506200035e60608b01620002ed565b95506200036e60808b01620002ed565b94506200037e60a08b01620002ed565b93506200038e60c08b01620002ed565b925060e08a015191506101008a015190509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003d557607f821691505b602082108103620003f457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000447575f81815260208120601f850160051c81016020861015620004225750805b601f850160051c820191505b8181101562000443578281556001016200042e565b5050505b505050565b81516001600160401b03811115620004685762000468620003ac565b6200048081620004798454620003c0565b84620003fa565b602080601f831160018114620004b6575f84156200049e5750858301515b5f19600386901b1c1916600185901b17855562000443565b5f85815260208120601f198616915b82811015620004e657888601518255948401946001909101908401620004c5565b50858210156200050457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8083546200052381620003c0565b600182811680156200053e5760018114620005545762000582565b60ff198416875282151583028701945062000582565b875f526020805f205f5b85811015620005795781548a8201529084019082016200055e565b50505082870194505b50929695505050505050565b60805160a05160c05160e05161010051610120516101405161016051613c65620006455f395f81816107b201526119f801525f8181610b1001526119ae01525f8181610822015261210501525f8181610b930152610d7001525f8181610b4201526114d301525f818161041f015281816110300152818161141d0152818161195501526127ef01525f81816104d1015281816111f6015281816120be01526122a201525f8181610522015261181d0152613c655ff3fe60806040526004361061033a575f3560e01c806383c6a8d3116101b2578063c7f758a8116100f2578063eb9019d411610092578063f294bd921161006d578063f294bd9214610b02578063f52c93c514610b34578063f8ce560a14610b66578063fbfa77cf14610b85575f80fd5b8063eb9019d414610a91578063efefad0c14610ab0578063f046c64614610acf575f80fd5b8063d11d19c2116100cd578063d11d19c2146109f9578063d48d842314610a2c578063dd4e2ba514610a4b578063deaaa7cc14610a5e575f80fd5b8063c7f758a814610989578063c9167e6c146109bb578063cee87708146109da575f80fd5b80639b9e9cf81161015d578063c01f9e3711610138578063c01f9e371461090c578063c27cabb514610941578063c2ee3a0814610955578063c59057e41461096a575f80fd5b80639b9e9cf8146108a4578063a7224687146108c3578063b4d87a12146108ed575f80fd5b80638df3227f1161018d5780638df3227f146108145780638e9d8c341461084657806391ddadf414610879575f80fd5b806383c6a8d3146107a4578063889eba3b146107d65780638968eb07146107f5575f80fd5b80633bccf4fd1161027d57806356781388116102285780637b3c71d3116102035780637b3c71d3146106fa5780637d5e81e2146107195780637ecebe00146107385780637fcfb16414610779575f80fd5b8063567813881461066e57806364a38bf91461068d57806379cd4837146106ac575f80fd5b8063438596321161025857806343859632146105b95780634bf5d7e91461060a5780634d8e08251461064f575f80fd5b80633bccf4fd1461055a5780633e4f49e614610579578063414408e5146105a5575f80fd5b8063230bcb37116102e85780632b20e397116102c35780632b20e397146104c35780632d63f693146104f55780633644e515146105145780633932abb114610546575f80fd5b8063230bcb371461046257806324b2c7b3146104915780632656227d146104b0575f80fd5b8063143489d011610318578063143489d0146103a2578063160d66ae14610411578063189abd1914610443575f80fd5b806302a251a31461033e57806306fdde031461036057806310bf506814610381575b5f80fd5b348015610349575f80fd5b5060015b6040519081526020015b60405180910390f35b34801561036b575f80fd5b50610374610bb7565b6040516103579190612c4f565b34801561038c575f80fd5b506103a061039b366004612c61565b610c46565b005b3480156103ad575f80fd5b506103ec6103bc366004612c61565b5f9081526002602052604090205465010000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610357565b34801561041c575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b34801561044e575f80fd5b506103a061045d366004612c61565b610c5a565b34801561046d575f80fd5b5061048161047c366004612ca0565b610d9c565b6040519015158152602001610357565b34801561049c575f80fd5b5061034d6104ab366004612d10565b610ddc565b61034d6104be36600461300b565b610df5565b3480156104ce575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610500575f80fd5b5061034d61050f366004612c61565b610e7f565b34801561051f575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061034d565b348015610551575f80fd5b5061034d610ea7565b348015610565575f80fd5b5061034d6105743660046130a5565b610ece565b348015610584575f80fd5b50610598610593366004612c61565b610ef9565b6040516103579190613155565b3480156105b0575f80fd5b506103a0610fdd565b3480156105c4575f80fd5b506104816105d3366004613163565b5f91825260036020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b348015610615575f80fd5b5060408051808201909152600a81527f6d6f64653d65706f6368000000000000000000000000000000000000000000006020820152610374565b34801561065a575f80fd5b5061034d61066936600461318d565b6110ab565b348015610679575f80fd5b5061034d6106883660046131bf565b6110b5565b348015610698575f80fd5b5061034d6106a73660046131e0565b6110c9565b3480156106b7575f80fd5b5061034d6106c6366004613163565b5f91825260086020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205490565b348015610705575f80fd5b5061034d610714366004613285565b6110e0565b348015610724575f80fd5b5061034d6107333660046132cf565b6110f6565b348015610743575f80fd5b5061034d610752366004613388565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610784575f80fd5b5061034d610793366004612c61565b5f9081526007602052604090205490565b3480156107af575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061034d565b3480156107e1575f80fd5b506103a06107f03660046133a1565b6111b8565b348015610800575f80fd5b5061034d61080f3660046133c1565b611267565b34801561081f575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610851575f80fd5b5061034d7f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff81565b348015610884575f80fd5b5061088d61128f565b60405165ffffffffffff9091168152602001610357565b3480156108af575f80fd5b5061034d6108be36600461344e565b61129d565b3480156108ce575f80fd5b5060045473ffffffffffffffffffffffffffffffffffffffff166103ec565b3480156108f8575f80fd5b506103a0610907366004613163565b6112c9565b348015610917575f80fd5b5061034d610926366004612c61565b5f9081526002602052604090205462010000900461ffff1690565b34801561094c575f80fd5b5060055461034d565b348015610960575f80fd5b5061034d61271081565b348015610975575f80fd5b5061034d61098436600461300b565b6112df565b348015610994575f80fd5b506109a86109a3366004612c61565b611302565b6040516103579796959493929190613502565b3480156109c6575f80fd5b506103a06109d5366004612ca0565b61137c565b3480156109e5575f80fd5b5061034d6109f436600461355e565b611396565b348015610a04575f80fd5b5061034d7f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f81565b348015610a37575f80fd5b506103a0610a46366004613163565b6113bd565b348015610a56575f80fd5b506060610374565b348015610a69575f80fd5b5061034d7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610a9c575f80fd5b5061034d610aab366004612ca0565b6113cf565b348015610abb575f80fd5b506103a0610aca3660046135da565b61148f565b348015610ada575f80fd5b5061034d7fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa3281565b348015610b0d575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610b3f575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b348015610b71575f80fd5b5061034d610b80366004612c61565b505f90565b348015610b90575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006103ec565b60605f8054610bc590613613565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf190613613565b8015610c3c5780601f10610c1357610100808354040283529160200191610c3c565b820191905f5260205f20905b815481529060010190602001808311610c1f57829003601f168201915b5050505050905090565b610c4e6114b0565b610c578161152f565b50565b5f610c6482610ef9565b90506006816007811115610c7a57610c7a6130ef565b14158015610c9a57506003816007811115610c9757610c976130ef565b14155b15610cdc57806040517f3c726c17000000000000000000000000000000000000000000000000000000008152600401610cd39190613155565b60405180910390fd5b5f82815260066020908152604080832060018101805482547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909355949055905183815273ffffffffffffffffffffffffffffffffffffffff90911691829186917f847147bb46f853e52eedf4997e56154050d17c103e1bfe61a185f02a7b6b66c0910160405180910390a3610d95817f00000000000000000000000000000000000000000000000000000000000000008461156a565b5050505050565b5f818152600760209081526040808320546008835281842073ffffffffffffffffffffffffffffffffffffffff8716855290925290912054145b92915050565b5f610dea3388888888611648565b979650505050505050565b5f3415610e2e576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001610e396116af565b610e439190613691565b9050610e75845f81518110610e5a57610e5a6136a4565b602002602001015182600184610e709190613691565b6116d3565b9695505050505050565b5f81815260026020526040812054610e9d9060019061ffff166136d1565b61ffff1692915050565b5f610eb8610eb36116af565b611768565b610ec3576001610ec6565b60025b60ff16905090565b5f610eee610ee7610edf888861177d565b868686611864565b8787611892565b509695505050505050565b5f8181526002602052604081208054640100000000900460ff1615610f215750600792915050565b5f610f2a6116af565b825490915061ffff80821691620100009004165f829003610f77576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81831015610f8a57505f95945050505050565b808311610f9d5750600195945050505050565b8360010154846002015411610fb85750600395945050505050565b610fc38160026136f3565b831115610fd1576006610e75565b60049695505050505050565b60075f610fe86116af565b81526020019081526020015f20545f0361102e576040517f37e0d8fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414408e56040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611093575f80fd5b505af11580156110a5573d5f803e3d5ffd5b50505050565b5f610dd682611aaf565b5f6110c1338484611892565b509392505050565b5f6110d73386868686611648565b95945050505050565b5f6110ec338686611892565b5095945050505050565b5f8061110486868686611ad3565b5f81815260076020526040812080549395509193506001926111279084906136f3565b909155505060045460055460408051808201825273ffffffffffffffffffffffffffffffffffffffff93841680825260208083018581525f8981526006909252939020915182547fffffffffffffffffffffffff000000000000000000000000000000000000000016951694909417815590516001909101556111ac82333084611f57565b50505050949350505050565b6111c0611fb7565b6040517f889eba3b00000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063889eba3b906044015b5f604051808303815f87803b15801561124d575f80fd5b505af115801561125f573d5f803e3d5ffd5b505050505050565b5f61128361127a610edf8a8a8a8a611ff0565b89898989611648565b98975050505050505050565b5f6112986116af565b905090565b5f6112bb6112b2610edf8c8c8c8c8c8c61202f565b8b8b8b8b611648565b9a9950505050505050505050565b6112d1611fb7565b6112db8282612072565b5050565b5f6110d7835f815181106112f5576112f56136a4565b6020026020010151611aaf565b5f818152600260205260408120805461ffff808216936201000083049091169264010000000090920460ff169181908190819061133e89610ef9565b600182015460028301549254999b989a509698909791955065010000000000900473ffffffffffffffffffffffffffffffffffffffff169350915050565b6113846120ed565b61138d8261215c565b6112db8161152f565b5f6113b06113a9610edf8a8a8a8a612217565b8989611892565b5098975050505050505050565b6113c5611fb7565b6112db8282612256565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611464573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114889190613706565b9392505050565b611497611fb7565b6114a18383612072565b6114ab8382612256565b505050565b3330148015906114f657503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b1561152d576040517fec4acc1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60058190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290525f906116409085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526122d1565b949350505050565b5f805b848110156110ec5761169c87878784818110611669576116696136a4565b90506020020135868685818110611682576116826136a4565b9050602002016020810190611697919061371d565b611892565b5091506116a881613736565b905061164b565b5f6116be600c6213c68061379a565b6116c8904361379a565b6112989060016136f3565b5f341561170c576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818310611736576117288484611721816137ad565b9550612385565b9050805f036114885761170c565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6117746002836137e1565b60011492915050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f90611488906080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f6110d7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868686612417565b5f8061189f85858561259b565b90925090505f6118ad6116af565b5f81815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915281208054929350909182906118ed90613736565b91829055505f838152600760205260409020549091508114611910575050611aa7565b6040517fc580b26900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c580b269906024015f604051808303815f87803b158015611996575f80fd5b505af11580156119a8573d5f803e3d5ffd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f19886119f2866127be565b611a1c887f00000000000000000000000000000000000000000000000000000000000000006137f4565b611a26919061379a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015f604051808303815f87803b158015611a8e575f80fd5b505af1158015611aa0573d5f803e3d5ffd5b5050505050505b935093915050565b5f610dd682611abc610ea7565b611ac46116af565b611ace91906136f3565b61286d565b5f808551600114611b10576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16865f81518110611b3957611b396136a4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600114611bc9576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f81518110611bdb57611bdb6136a4565b60200260200101515f14611c1b576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8351600114611c56576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c78845f81518110611c6b57611c6b6136a4565b60200260200101516128be565b611c80610ea7565b611c886116af565b611c9291906136f3565b9050611cb7845f81518110611ca957611ca96136a4565b60200260200101518261286d565b5f8181526002602052604090205490925061ffff1615611d03576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516101008101825261ffff83811680835260208084019182525f84860181815233606087019081526080870183815260a0880184815260c0890185815260e08a018681528d87526002978890529a862099518a54985195519451935192518a167b01000000000000000000000000000000000000000000000000000000027fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff938b1679010000000000000000000000000000000000000000000000000002939093167fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff90951665010000000000027fffffffffffffff0000000000000000000000000000000000000000ffffffffff96151564010000000002969096167fffffffffffffff000000000000000000000000000000000000000000ffffffff978c1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909b1692909b169190911798909817949094169790971791909117169390931793909317845590516001840155925191909201558190507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0833389898b5167ffffffffffffffff811115611ef857611ef8612da3565b604051908082528060200260200182016040528015611f2b57816020015b6060815260200190600190039081611f165790505b508a88888c604051611f4599989796959493929190613897565b60405180910390a15094509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290525f906110d79086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016115be565b33301461152d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110d77fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa325f1b868686866040516020016117c09594939291906139e6565b5f610dea7f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff5f1b8888888888886040516020016117c09796959493929190613a59565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401611236565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461152d576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166121a9576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b5f6110d77f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f5f1b868686866040516020016117c0959493929190613b5d565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401611236565b5f73ffffffffffffffffffffffffffffffffffffffff83163b6122f557505f610dd6565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161231c9190613b85565b5f604051808303815f865af19150503d805f8114612355576040519150601f19603f3d011682016040523d82523d5f602084013e61235a565b606091505b5090925090508180156116405750805115806116405750808060200190518101906116409190613ba0565b5f6123908383612a7f565b5f81815260066020908152604080832060018101805482547fffffffffffffffffffffffff000000000000000000000000000000000000000081169093559085905560029093529220549293509173ffffffffffffffffffffffffffffffffffffffff9182169161240e91839165010000000000909104168461156a565b50505092915050565b5f8442111561245b576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101869052426024820152604401610cd3565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082118061249c57508360ff16601b1415801561249c57508360ff16601c14155b156124d3576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015612523573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166110d7576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526002602052604081208190816125b486610ef9565b905060018160078111156125ca576125ca6130ef565b1461260357806040517ff1a25b13000000000000000000000000000000000000000000000000000000008152600401610cd39190613155565b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915290205460ff161561266c576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915582546126d6919061ffff166136d1565b61ffff1692506126e687846113cf565b93505f8560ff1660018111156126fe576126fe6130ef565b600181111561270f5761270f6130ef565b036127325783826001015f82825461272791906136f3565b9091555061274b9050565b83826002015f82825461274591906136f3565b90915550505b6040805187815260ff871660208201529081018590526080606082018190525f9082015273ffffffffffffffffffffffffffffffffffffffff8816907fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49060a00160405180910390a25050935093915050565b6040517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063981b24d090602401602060405180830381865afa158015612849573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd69190613706565b5f8282604051602001612881929190613bbf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f6128c882613be0565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4d87a12000000000000000000000000000000000000000000000000000000001480159061295e57507fffffffff0000000000000000000000000000000000000000000000000000000081167fefefad0c0000000000000000000000000000000000000000000000000000000014155b80156129ac57507fffffffff0000000000000000000000000000000000000000000000000000000081167fd48d84230000000000000000000000000000000000000000000000000000000014155b80156129fa57507fffffffff0000000000000000000000000000000000000000000000000000000081167f10bf50680000000000000000000000000000000000000000000000000000000014155b8015612a4857507fffffffff0000000000000000000000000000000000000000000000000000000081167f889eba3b0000000000000000000000000000000000000000000000000000000014155b156112db576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612a8a838361286d565b5f81815260026020526040902080549192509061ffff168314612ab0575f915050610dd6565b6004612abb83610ef9565b6007811115612acc57612acc6130ef565b14612ada575f915050610dd6565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612b399084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612b689190613b85565b5f604051808303815f865af19150503d805f8114612ba1576040519150601f19603f3d011682016040523d82523d5f602084013e612ba6565b606091505b50915091508161240e57806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401610cd39190612c4f565b5f5b83811015612bfe578181015183820152602001612be6565b50505f910152565b5f8151808452612c1d816020860160208601612be4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6114886020830184612c06565b5f60208284031215612c71575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9b575f80fd5b919050565b5f8060408385031215612cb1575f80fd5b612cba83612c78565b946020939093013593505050565b5f8083601f840112612cd8575f80fd5b50813567ffffffffffffffff811115612cef575f80fd5b6020830191508360208260051b8501011115612d09575f80fd5b9250929050565b5f805f805f8060608789031215612d25575f80fd5b863567ffffffffffffffff80821115612d3c575f80fd5b612d488a838b01612cc8565b90985096506020890135915080821115612d60575f80fd5b612d6c8a838b01612cc8565b90965094506040890135915080821115612d84575f80fd5b50612d9189828a01612cc8565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e1757612e17612da3565b604052919050565b5f67ffffffffffffffff821115612e3857612e38612da3565b5060051b60200190565b5f82601f830112612e51575f80fd5b81356020612e66612e6183612e1f565b612dd0565b82815260059290921b84018101918181019086841115612e84575f80fd5b8286015b84811015610eee57612e9981612c78565b8352918301918301612e88565b5f82601f830112612eb5575f80fd5b81356020612ec5612e6183612e1f565b82815260059290921b84018101918181019086841115612ee3575f80fd5b8286015b84811015610eee5780358352918301918301612ee7565b5f67ffffffffffffffff831115612f1757612f17612da3565b612f4860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612dd0565b9050828152838383011115612f5b575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112612f80575f80fd5b61148883833560208501612efe565b5f82601f830112612f9e575f80fd5b81356020612fae612e6183612e1f565b82815260059290921b84018101918181019086841115612fcc575f80fd5b8286015b84811015610eee57803567ffffffffffffffff811115612fef575f8081fd5b612ffd8986838b0101612f71565b845250918301918301612fd0565b5f805f806080858703121561301e575f80fd5b843567ffffffffffffffff80821115613035575f80fd5b61304188838901612e42565b95506020870135915080821115613056575f80fd5b61306288838901612ea6565b94506040870135915080821115613077575f80fd5b5061308487828801612f8f565b949793965093946060013593505050565b803560ff81168114612c9b575f80fd5b5f805f805f60a086880312156130b9575f80fd5b853594506130c960208701613095565b93506130d760408701613095565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60088110613151577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610dd6828461311c565b5f8060408385031215613174575f80fd5b8235915061318460208401612c78565b90509250929050565b5f6020828403121561319d575f80fd5b813567ffffffffffffffff8111156131b3575f80fd5b61164084828501612f71565b5f80604083850312156131d0575f80fd5b8235915061318460208401613095565b5f805f80604085870312156131f3575f80fd5b843567ffffffffffffffff8082111561320a575f80fd5b61321688838901612cc8565b9096509450602087013591508082111561322e575f80fd5b5061323b87828801612cc8565b95989497509550505050565b5f8083601f840112613257575f80fd5b50813567ffffffffffffffff81111561326e575f80fd5b602083019150836020828501011115612d09575f80fd5b5f805f8060608587031215613298575f80fd5b843593506132a860208601613095565b9250604085013567ffffffffffffffff8111156132c3575f80fd5b61323b87828801613247565b5f805f80608085870312156132e2575f80fd5b843567ffffffffffffffff808211156132f9575f80fd5b61330588838901612e42565b9550602087013591508082111561331a575f80fd5b61332688838901612ea6565b9450604087013591508082111561333b575f80fd5b61334788838901612f8f565b9350606087013591508082111561335c575f80fd5b508501601f8101871361336d575f80fd5b61337c87823560208401612efe565b91505092959194509250565b5f60208284031215613398575f80fd5b61148882612c78565b5f80604083850312156133b2575f80fd5b50508035926020909101359150565b5f805f805f805f60a0888a0312156133d7575f80fd5b873567ffffffffffffffff808211156133ee575f80fd5b6133fa8b838c01612cc8565b909950975060208a0135915080821115613412575f80fd5b5061341f8a828b01612cc8565b9096509450613432905060408901613095565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215613466575f80fd5b893567ffffffffffffffff8082111561347d575f80fd5b6134898d838e01612cc8565b909b50995060208c01359150808211156134a1575f80fd5b6134ad8d838e01612cc8565b909950975060408c01359150808211156134c5575f80fd5b506134d28c828d01612cc8565b90965094506134e5905060608b01613095565b925060808a0135915060a08a013590509295985092959850929598565b61ffff888116825287166020820152851515604082015260e0810161352a606083018761311c565b8460808301528360a083015273ffffffffffffffffffffffffffffffffffffffff831660c083015298975050505050505050565b5f805f805f805f60c0888a031215613574575f80fd5b8735965061358460208901613095565b9550604088013567ffffffffffffffff81111561359f575f80fd5b6135ab8a828b01613247565b90965094506135be905060608901613095565b92506080880135915060a0880135905092959891949750929550565b5f805f606084860312156135ec575f80fd5b833592506135fc60208501612c78565b915061360a60408501612c78565b90509250925092565b600181811c9082168061362757607f821691505b60208210810361365e577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610dd657610dd6613664565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61ffff8281168282160390808211156136ec576136ec613664565b5092915050565b80820180821115610dd657610dd6613664565b5f60208284031215613716575f80fd5b5051919050565b5f6020828403121561372d575f80fd5b61148882613095565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361376657613766613664565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826137a8576137a861376d565b500490565b5f816137bb576137bb613664565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f826137ef576137ef61376d565b500690565b8082028115828204841417610dd657610dd6613664565b5f8151808452602080850194508084015f5b838110156138395781518752958201959082019060010161381d565b509495945050505050565b5f81518084526020808501808196508360051b810191508286015f5b8581101561388a578284038952613878848351612c06565b98850198935090840190600101613860565b5091979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e16828701528360408701528293508c5180845261014087019450828e0193505f5b818110156138f95784518316865294830194938301936001016138db565b50505050508281036060840152613910818a61380b565b905082810360808401526139248189613844565b905082810360a08401526139388188613844565b90508560c08401528460e08401528281036101008401526139598185612c06565b9c9b505050505050505050505050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613999575f80fd5b8260051b80836020870137939093016020019392505050565b8183525f60208085019450825f5b858110156138395760ff6139d383613095565b16875295820195908201906001016139c0565b858152606060208201525f6139ff606083018688613969565b82810360408401526112838185876139b2565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8781525f6020608081840152613a7360808401898b613969565b8381036040850152613a8681888a6139b2565b84810360608601528581529050818101600586901b82018301875f5b88811015613b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112613b02575f80fd5b8a01868101903567ffffffffffffffff811115613b1d575f80fd5b803603821315613b2b575f80fd5b613b36858284613a12565b958801959450505090850190600101613aa2565b50909d9c50505050505050505050505050565b85815284602082015260ff84166040820152608060608201525f610dea608083018486613a12565b5f8251613b96818460208701612be4565b9190910192915050565b5f60208284031215613bb0575f80fd5b81518015158114611488575f80fd5b604081525f613bd16040830185612c06565b90508260208301529392505050565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015613c275780818460040360031b1b83161693505b50505091905056fea2646970667358221220bd61bdd9666f52afd19cbf46f43d44c2dfc17128230806ebc4e10cf068d93ece64736f6c63430008150033a264697066735822122052ca340df5673b3d63fed9b4c16eb8d99354ca28ecec9bf5988bf70fdb8f4aa464736f6c63430008150033" } diff --git a/bytecode/ZeroGovernor.json b/bytecode/ZeroGovernor.json new file mode 100644 index 00000000..d0b7f2c6 --- /dev/null +++ b/bytecode/ZeroGovernor.json @@ -0,0 +1 @@ +{ "bytecode": "0x61010060405234801562000011575f80fd5b5060405162003b4f38038062003b4f833981016040819052620000349162000316565b60408051808201909152600c81526b2d32b937a3b7bb32b93737b960a11b6020820152848483838383827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6200008c8382620004a9565b6040516200009b919062000571565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120608052506001600160a01b03821660a0819052620001315760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03811660c08190526200015e576040516316d3e4a360e01b815260040160405180910390fd5b50505062000172816200026260201b60201c565b5050505081515f0362000198576040516311596cb960e01b815260040160405180910390fd5b815f81518110620001ad57620001ad620005eb565b60209081029190910101516001600160a01b031660e0525f5b825181101562000257575f838281518110620001e657620001e6620005eb565b602002602001015190505f6001600160a01b0316816001600160a01b0316036200022357604051634e71231360e11b815260040160405180910390fd5b6001600160a01b03165f908152600560205260409020805460ff191660011790556200024f81620005ff565b9050620001c6565b505050505062000624565b6127108161ffff1611156200028a57604051632d94b10f60e11b815260040160405180910390fd5b6004805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b0381168114620002eb575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b805161ffff81168114620002eb575f80fd5b5f805f80608085870312156200032a575f80fd5b6200033585620002d4565b9350602062000346818701620002d4565b60408701519094506001600160401b038082111562000363575f80fd5b818801915088601f83011262000377575f80fd5b8151818111156200038c576200038c620002f0565b8060051b604051601f19603f83011681018181108582111715620003b457620003b4620002f0565b60405291825284820192508381018501918b831115620003d2575f80fd5b938501935b82851015620003fb57620003eb85620002d4565b84529385019392850192620003d7565b809750505050505050620004126060860162000304565b905092959194509250565b600181811c908216806200043257607f821691505b6020821081036200045157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004a4575f81815260208120601f850160051c810160208610156200047f5750805b601f850160051c820191505b81811015620004a0578281556001016200048b565b5050505b505050565b81516001600160401b03811115620004c557620004c5620002f0565b620004dd81620004d684546200041d565b8462000457565b602080601f83116001811462000513575f8415620004fb5750858301515b5f19600386901b1c1916600185901b178555620004a0565b5f85815260208120601f198616915b82811015620005435788860151825594840194600190910190840162000522565b50858210156200056157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f80835462000580816200041d565b600182811680156200059b5760018114620005b157620005df565b60ff1984168752821515830287019450620005df565b875f526020805f205f5b85811015620005d65781548a820152908401908201620005bb565b50505082870194505b50929695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f600182016200061d57634e487b7160e01b5f52601160045260245ffd5b5060010190565b60805160a05160c05160e0516134b8620006975f395f61070501525f81816103d201528181610e83015281816112e7015261196401525f818161043601528181610b2b01528181610b6701528181610eab01528181610edd015261135c01525f8181610487015261169201526134b85ff3fe6080604052600436106102ed575f3560e01c80637b3c71d311610186578063c2ee3a08116100dc578063dd4e2ba511610087578063f046c64611610062578063f046c64614610959578063f52c93c51461098c578063f8ce560a146109a0575f80fd5b8063dd4e2ba5146108f4578063deaaa7cc14610907578063eb9019d41461093a575f80fd5b8063c9167e6c116100b7578063c9167e6c14610883578063cee87708146108a2578063d11d19c2146108c1575f80fd5b8063c2ee3a081461081c578063c59057e414610831578063c7f758a814610850575f80fd5b80638e9d8c341161013c578063c01f9e3711610117578063c01f9e37146107c5578063c0324da1146107fa578063c27cabb5146104ab575f80fd5b80638e9d8c341461074857806391ddadf41461077b5780639b9e9cf8146107a6575f80fd5b80637ecebe001161016c5780637ecebe00146106b65780638933c81b146106f75780638968eb0714610729575f80fd5b80637b3c71d3146106785780637d5e81e214610697575f80fd5b80633a5762d3116102465780634d6d7441116101f157806356781388116101cc57806356781388146105f657806364a38bf91461061557806377750fde14610634575f80fd5b80634d6d7441146105a45780634d8e0825146105b857806353b0bbfd146105d7575f80fd5b80634385963211610221578063438596321461051c57806349a45dfb1461054b5780634bf5d7e91461055f575f80fd5b80633a5762d3146104bd5780633bccf4fd146104d15780633e4f49e6146104f0575f80fd5b806324b2c7b3116102a65780632d63f693116102815780632d63f6931461045a5780633644e515146104795780633932abb1146104ab575f80fd5b806324b2c7b3146103f65780632656227d146104155780632b20e39714610428575f80fd5b8063086f7d65116102d6578063086f7d6514610334578063143489d014610355578063160d66ae146103c4575f80fd5b806302a251a3146102f157806306fdde0314610313575b5f80fd5b3480156102fc575f80fd5b5060025b6040519081526020015b60405180910390f35b34801561031e575f80fd5b506103276109bf565b60405161030a91906124d4565b34801561033f575f80fd5b5061035361034e3660046124e6565b610a4e565b005b348015610360575f80fd5b5061039f61036f366004612507565b5f9081526002602052604090205465010000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030a565b3480156103cf575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061039f565b348015610401575f80fd5b50610300610410366004612566565b610a62565b610300610423366004612884565b610a7b565b348015610433575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061039f565b348015610465575f80fd5b50610300610474366004612507565b610af9565b348015610484575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610300565b3480156104b6575f80fd5b505f610300565b3480156104c8575f80fd5b50610353610b21565b3480156104dc575f80fd5b506103006104eb366004612923565b610c6e565b3480156104fb575f80fd5b5061050f61050a366004612507565b610c99565b60405161030a91906129d3565b348015610527575f80fd5b5061053b6105363660046129e1565b610e05565b604051901515815260200161030a565b348015610556575f80fd5b50610353610e3e565b34801561056a575f80fd5b5060408051808201909152600a81527f6d6f64653d65706f6368000000000000000000000000000000000000000000006020820152610327565b3480156105af575f80fd5b5061039f610eda565b3480156105c3575f80fd5b506103006105d2366004612a0f565b610f6d565b3480156105e2575f80fd5b506103536105f13660046124e6565b610f77565b348015610601575f80fd5b50610300610610366004612a49565b61100a565b348015610620575f80fd5b5061030061062f366004612a73565b61101e565b34801561063f575f80fd5b5061053b61064e366004612ada565b73ffffffffffffffffffffffffffffffffffffffff165f9081526005602052604090205460ff1690565b348015610683575f80fd5b50610300610692366004612b33565b611035565b3480156106a2575f80fd5b506103006106b1366004612b7d565b61104b565b3480156106c1575f80fd5b506103006106d0366004612ada565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610702575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061039f565b348015610734575f80fd5b50610300610743366004612c36565b611058565b348015610753575f80fd5b506103007f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff81565b348015610786575f80fd5b5061078f611080565b60405165ffffffffffff909116815260200161030a565b3480156107b1575f80fd5b506103006107c0366004612cc3565b611089565b3480156107d0575f80fd5b506103006107df366004612507565b5f9081526002602052604090205462010000900461ffff1690565b348015610805575f80fd5b5060045460405161ffff909116815260200161030a565b348015610827575f80fd5b5061030061271081565b34801561083c575f80fd5b5061030061084b366004612884565b6110b5565b34801561085b575f80fd5b5061086f61086a366004612507565b6110d8565b60405161030a989796959493929190612d77565b34801561088e575f80fd5b5061035361089d366004612ddf565b61117b565b3480156108ad575f80fd5b506103006108bc366004612e09565b611272565b3480156108cc575f80fd5b506103007f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f81565b3480156108ff575f80fd5b506060610327565b348015610912575f80fd5b506103007f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610945575f80fd5b50610300610954366004612ddf565b611299565b348015610964575f80fd5b506103007fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa3281565b348015610997575f80fd5b5061039f611359565b3480156109ab575f80fd5b506103006109ba366004612507565b6113c3565b60605f80546109cd90612e85565b80601f01602080910402602001604051908101604052809291908181526020018280546109f990612e85565b8015610a445780601f10610a1b57610100808354040283529160200191610a44565b820191905f5260205f20905b815481529060010190602001808311610a2757829003601f168201915b5050505050905090565b610a566113f0565b610a5f8161142b565b50565b5f610a7033888888886114d2565b979650505050505050565b5f3415610ab4576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abd611539565b9050610aef845f81518110610ad457610ad4612ed6565b602002602001015182600184610aea9190612f30565b61155d565b9695505050505050565b5f81815260026020526040812054610b179060019061ffff16612f43565b61ffff1692915050565b610b296113f0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636b8ab97d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639662ac586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf29190612f65565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015b5f604051808303815f87803b158015610c56575f80fd5b505af1158015610c68573d5f803e3d5ffd5b50505050565b5f610c8e610c87610c7f88886115f2565b8686866116d9565b8787611707565b509695505050505050565b5f8181526002602052604081208054640100000000900460ff1615610cc15750600792915050565b805461ffff165f819003610d01576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d0a611539565b905081811015610d1e57505f949350505050565b5f610d32610d2d600185612f30565b611933565b8454909150790100000000000000000000000000000000000000000000000000900461ffff16610d628282612f80565b6127108660020154610d749190612f80565b10610da057845462010000900461ffff16831115610d93576006610a70565b6004979650505050505050565b5f610dab8383612f80565b612710876001015485610dbe9190612f30565b610dc89190612f80565b10159050808015610de45750855462010000900461ffff168411155b15610df757506001979650505050505050565b506003979650505050505050565b5f82815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b92915050565b610e466113f0565b6040517f6b8ab97d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636b8ab97d90602401610c3f565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634d6d74416040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f689190612f65565b905090565b5f610e38826119e2565b610f7f6113f0565b610f87611359565b6040517f94eac99500000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff91909116906394eac995906024015f604051808303815f87803b158015610ff1575f80fd5b505af1158015611003573d5f803e3d5ffd5b5050505050565b5f611016338484611707565b509392505050565b5f61102c33868686866114d2565b95945050505050565b5f611041338686611707565b5095945050505050565b5f611041858585856119ff565b5f61107461106b610c7f8a8a8a8a611cd3565b898989896114d2565b98975050505050505050565b5f610f68611539565b5f6110a761109e610c7f8c8c8c8c8c8c611d12565b8b8b8b8b6114d2565b9a9950505050505050505050565b5f61102c835f815181106110cb576110cb612ed6565b60200260200101516119e2565b5f818152600260205260408120805461ffff808216936201000083049091169264010000000090920460ff169181908190819081906111168a610c99565b815460018301546002909301549a9c999b5097999098790100000000000000000000000000000000000000000000000000890461ffff16989297509095506501000000000090910473ffffffffffffffffffffffffffffffffffffffff169350915050565b6111836113f0565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526005602052604090205460ff166111e1576040517f23b3ddc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e9610eda565b6040517fc9167e6c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063c9167e6c906044015f604051808303815f87803b158015611258575f80fd5b505af115801561126a573d5f803e3d5ffd5b505050505050565b5f61128c611285610c7f8a8a8a8a611d55565b8989611707565b5098975050505050505050565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa15801561132e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113529190612f97565b9392505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f52c93c56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f44573d5f803e3d5ffd5b5f6127106113d5610d2d600185612f30565b6004546113e6919061ffff16612f80565b610e389190612fae565b333014611429576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6127108161ffff16111561146b576040517f5b29621e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f805b8481101561104157611526878787848181106114f3576114f3612ed6565b9050602002013586868581811061150c5761150c612ed6565b90506020020160208101906115219190612fe6565b611707565b50915061153281612fff565b90506114d5565b5f611548600c6213c680612fae565b6115529043612fae565b610f68906001613036565b5f3415611596576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8183106115c0576115b284846115ab81613049565b9550611d94565b9050805f0361135257611596565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f90611352906080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f61102c857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868686611f02565b5f82815260026020526040812081908161172086610c99565b905060018160078111156117365761173661296d565b1461177857806040517ff1a25b1300000000000000000000000000000000000000000000000000000000815260040161176f91906129d3565b60405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915290205460ff16156117e1576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155825461184b919061ffff16612f43565b61ffff16925061185b8784611299565b93505f8560ff1660018111156118735761187361296d565b60018111156118845761188461296d565b036118a75783826001015f82825461189c9190613036565b909155506118c09050565b83826002015f8282546118ba9190613036565b90915550505b6040805187815260ff871660208201529081018590526080606082018190525f9082015273ffffffffffffffffffffffffffffffffffffffff8816907fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49060a00160405180910390a25050935093915050565b6040517f981b24d0000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063981b24d090602401602060405180830381865afa1580156119be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e389190612f97565b5f610e3882826119f0611539565b6119fa9190613036565b612086565b5f808551600114611a3c576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16865f81518110611a6557611a65612ed6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600114611af5576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f81518110611b0757611b07612ed6565b60200260200101515f14611b47576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8351600114611b82576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ba4845f81518110611b9757611b97612ed6565b60200260200101516120d7565b5f611bad611539565b611bb79190613036565b9050611bdc845f81518110611bce57611bce612ed6565b602002602001015182612086565b5f8181526002602052604090205490925061ffff1615611c28576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611c33838361229c565b90507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0833389898b5167ffffffffffffffff811115611c7457611c746125f9565b604051908082528060200260200182016040528015611ca757816020015b6060815260200190600190039081611c925790505b508a88888c604051611cc199989796959493929190613109565b60405180910390a15094509492505050565b5f61102c7fb20d034e2b92f6b024d089dda1efe87253106a2d1a82b2a19ec386d383e7aa325f1b86868686604051602001611635959493929190613258565b5f610a707f4a8d949a35428f9a377e2e2b89d8883cda4fbc8055ff94f098fc4955c82d42ff5f1b88888888888860405160200161163597969594939291906132cb565b5f61102c7f61550a894bd041be3cb7ce7ed747abee6eca83842eee10ff98891711d55a697f5f1b868686866040516020016116359594939291906133cf565b5f611d9f8383612086565b5f81815260026020526040902080549192509061ffff168314611dc5575f915050610e38565b6004611dd083610c99565b6007811115611de157611de161296d565b14611def575f915050610e38565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90611e4e9084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051611e7d91906133f7565b5f604051808303815f865af19150503d805f8114611eb6576040519150601f19603f3d011682016040523d82523d5f602084013e611ebb565b606091505b509150915081611ef957806040517f15fcd67500000000000000000000000000000000000000000000000000000000815260040161176f91906124d4565b50505092915050565b5f84421115611f46576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810186905242602482015260440161176f565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180611f8757508360ff16601b14158015611f8757508360ff16601c14155b15611fbe576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa15801561200e573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661102c576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828260405160200161209a929190613412565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f6120e182613433565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f3a5762d3000000000000000000000000000000000000000000000000000000001480159061217757507fffffffff0000000000000000000000000000000000000000000000000000000081167f49a45dfb0000000000000000000000000000000000000000000000000000000014155b80156121c557507fffffffff0000000000000000000000000000000000000000000000000000000081167fc9167e6c0000000000000000000000000000000000000000000000000000000014155b801561221357507fffffffff0000000000000000000000000000000000000000000000000000000081167f53b0bbfd0000000000000000000000000000000000000000000000000000000014155b801561226157507fffffffff0000000000000000000000000000000000000000000000000000000081167f086f7d650000000000000000000000000000000000000000000000000000000014155b15612298576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f6122a8826001613036565b604080516101008101825261ffff948516815282851660208083019182525f83850181815233606086019081526004548a166080870190815260a0870184815260c0880185815260e089018681529d8652600296879052989094209651875496519351925191519451908c167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009097169690961762010000938c1693909302929092177fffffffffffffff000000000000000000000000000000000000000000ffffffff16640100000000911515919091027fffffffffffffff0000000000000000000000000000000000000000ffffffffff16176501000000000073ffffffffffffffffffffffffffffffffffffffff90921691909102177fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff16790100000000000000000000000000000000000000000000000000918916919091027fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177b0100000000000000000000000000000000000000000000000000000092909716919091029590951781559051600182015593519390920192909255919050565b5f5b8381101561248357818101518382015260200161246b565b50505f910152565b5f81518084526124a2816020860160208601612469565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f611352602083018461248b565b5f602082840312156124f6575f80fd5b813561ffff81168114611352575f80fd5b5f60208284031215612517575f80fd5b5035919050565b5f8083601f84011261252e575f80fd5b50813567ffffffffffffffff811115612545575f80fd5b6020830191508360208260051b850101111561255f575f80fd5b9250929050565b5f805f805f806060878903121561257b575f80fd5b863567ffffffffffffffff80821115612592575f80fd5b61259e8a838b0161251e565b909850965060208901359150808211156125b6575f80fd5b6125c28a838b0161251e565b909650945060408901359150808211156125da575f80fd5b506125e789828a0161251e565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561266d5761266d6125f9565b604052919050565b5f67ffffffffffffffff82111561268e5761268e6125f9565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610a5f575f80fd5b5f82601f8301126126c8575f80fd5b813560206126dd6126d883612675565b612626565b82815260059290921b840181019181810190868411156126fb575f80fd5b8286015b84811015610c8e57803561271281612698565b83529183019183016126ff565b5f82601f83011261272e575f80fd5b8135602061273e6126d883612675565b82815260059290921b8401810191818101908684111561275c575f80fd5b8286015b84811015610c8e5780358352918301918301612760565b5f67ffffffffffffffff831115612790576127906125f9565b6127c160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612626565b90508281528383830111156127d4575f80fd5b828260208301375f602084830101529392505050565b5f82601f8301126127f9575f80fd5b61135283833560208501612777565b5f82601f830112612817575f80fd5b813560206128276126d883612675565b82815260059290921b84018101918181019086841115612845575f80fd5b8286015b84811015610c8e57803567ffffffffffffffff811115612868575f8081fd5b6128768986838b01016127ea565b845250918301918301612849565b5f805f8060808587031215612897575f80fd5b843567ffffffffffffffff808211156128ae575f80fd5b6128ba888389016126b9565b955060208701359150808211156128cf575f80fd5b6128db8883890161271f565b945060408701359150808211156128f0575f80fd5b506128fd87828801612808565b949793965093946060013593505050565b803560ff8116811461291e575f80fd5b919050565b5f805f805f60a08688031215612937575f80fd5b853594506129476020870161290e565b93506129556040870161290e565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600881106129cf577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610e38828461299a565b5f80604083850312156129f2575f80fd5b823591506020830135612a0481612698565b809150509250929050565b5f60208284031215612a1f575f80fd5b813567ffffffffffffffff811115612a35575f80fd5b612a41848285016127ea565b949350505050565b5f8060408385031215612a5a575f80fd5b82359150612a6a6020840161290e565b90509250929050565b5f805f8060408587031215612a86575f80fd5b843567ffffffffffffffff80821115612a9d575f80fd5b612aa98883890161251e565b90965094506020870135915080821115612ac1575f80fd5b50612ace8782880161251e565b95989497509550505050565b5f60208284031215612aea575f80fd5b813561135281612698565b5f8083601f840112612b05575f80fd5b50813567ffffffffffffffff811115612b1c575f80fd5b60208301915083602082850101111561255f575f80fd5b5f805f8060608587031215612b46575f80fd5b84359350612b566020860161290e565b9250604085013567ffffffffffffffff811115612b71575f80fd5b612ace87828801612af5565b5f805f8060808587031215612b90575f80fd5b843567ffffffffffffffff80821115612ba7575f80fd5b612bb3888389016126b9565b95506020870135915080821115612bc8575f80fd5b612bd48883890161271f565b94506040870135915080821115612be9575f80fd5b612bf588838901612808565b93506060870135915080821115612c0a575f80fd5b508501601f81018713612c1b575f80fd5b612c2a87823560208401612777565b91505092959194509250565b5f805f805f805f60a0888a031215612c4c575f80fd5b873567ffffffffffffffff80821115612c63575f80fd5b612c6f8b838c0161251e565b909950975060208a0135915080821115612c87575f80fd5b50612c948a828b0161251e565b9096509450612ca790506040890161290e565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215612cdb575f80fd5b893567ffffffffffffffff80821115612cf2575f80fd5b612cfe8d838e0161251e565b909b50995060208c0135915080821115612d16575f80fd5b612d228d838e0161251e565b909950975060408c0135915080821115612d3a575f80fd5b50612d478c828d0161251e565b9096509450612d5a905060608b0161290e565b925060808a0135915060a08a013590509295985092959850929598565b61ffff898116825288811660208301528715156040830152610100820190612da2606084018961299a565b95909516608082015260a081019390935260c083019190915273ffffffffffffffffffffffffffffffffffffffff1660e090910152949350505050565b5f8060408385031215612df0575f80fd5b8235612dfb81612698565b946020939093013593505050565b5f805f805f805f60c0888a031215612e1f575f80fd5b87359650612e2f6020890161290e565b9550604088013567ffffffffffffffff811115612e4a575f80fd5b612e568a828b01612af5565b9096509450612e6990506060890161290e565b92506080880135915060a0880135905092959891949750929550565b600181811c90821680612e9957607f821691505b602082108103612ed0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610e3857610e38612f03565b61ffff828116828216039080821115612f5e57612f5e612f03565b5092915050565b5f60208284031215612f75575f80fd5b815161135281612698565b8082028115828204841417610e3857610e38612f03565b5f60208284031215612fa7575f80fd5b5051919050565b5f82612fe1577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215612ff6575f80fd5b6113528261290e565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361302f5761302f612f03565b5060010190565b80820180821115610e3857610e38612f03565b5f8161305757613057612f03565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8151808452602080850194508084015f5b838110156130ab5781518752958201959082019060010161308f565b509495945050505050565b5f81518084526020808501808196508360051b810191508286015f5b858110156130fc5782840389526130ea84835161248b565b988501989350908401906001016130d2565b5091979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e16828701528360408701528293508c5180845261014087019450828e0193505f5b8181101561316b57845183168652948301949383019360010161314d565b50505050508281036060840152613182818a61307d565b9050828103608084015261319681896130b6565b905082810360a08401526131aa81886130b6565b90508560c08401528460e08401528281036101008401526131cb818561248b565b9c9b505050505050505050505050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561320b575f80fd5b8260051b80836020870137939093016020019392505050565b8183525f60208085019450825f5b858110156130ab5760ff6132458361290e565b1687529582019590820190600101613232565b858152606060208201525f6132716060830186886131db565b8281036040840152611074818587613224565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8781525f60206080818401526132e560808401898b6131db565b83810360408501526132f881888a613224565b84810360608601528581529050818101600586901b82018301875f5b888110156133bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112613374575f80fd5b8a01868101903567ffffffffffffffff81111561338f575f80fd5b80360382131561339d575f80fd5b6133a8858284613284565b958801959450505090850190600101613314565b50909d9c50505050505050505050505050565b85815284602082015260ff84166040820152608060608201525f610a70608083018486613284565b5f8251613408818460208701612469565b9190910192915050565b604081525f613424604083018561248b565b90508260208301529392505050565b5f815160208301517fffffffff000000000000000000000000000000000000000000000000000000008082169350600483101561347a5780818460040360031b1b83161693505b50505091905056fea2646970667358221220174286650b1f3432b0cc692cee0463e014d9a320fff5e430ea5220bf69e94a6b64736f6c63430008150033" } diff --git a/bytecode/ZeroToken.json b/bytecode/ZeroToken.json new file mode 100644 index 00000000..133c1faf --- /dev/null +++ b/bytecode/ZeroToken.json @@ -0,0 +1 @@ +{ "bytecode": "0x60e060405234801562000010575f80fd5b5060405162002d5438038062002d548339810160408190526200003391620006bb565b604080518082018252600a8152692d32b937902a37b5b2b760b11b602080830191909152825180840190935260048352635a45524f60e01b90830152906006828282827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f620000a483826200081d565b604051620000b39190620008e5565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f1981840301815291905280516020909101206080525060026200012a83826200081d565b5060ff1660a0525050845184519093509150508082146200016c576040516355c5b3e360e11b8152600481018390526024810182905260440160405180910390fd5b5f5b82811015620001d457620001c18582815181106200019057620001906200095f565b6020026020010151858381518110620001ad57620001ad6200095f565b6020026020010151620001ee60201b60201c565b620001cc8162000987565b90506200016e565b5050506001600160a01b0390921660c05250620009ee9050565b6040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200023a828262000264565b506200024890508162000289565b6200025e6200025783620002a7565b82620002db565b50505050565b5f806200027e8462000bcc620002f560201b178562000309565b915091509250929050565b620002a2600462000bcc620002f560201b17836200033c565b505050565b6001600160a01b0381165f908152600660205260408120620002d590620002ce90620004c3565b83620004fe565b92915050565b5f806200027e8462000bcc620002f560201b17856200051c565b5f620003028284620009a2565b9392505050565b6001600160a01b0383165f90815260056020526040812081906200032f9085856200033c565b915091505b935093915050565b5f80806200034962000594565b86549091505f819003620003d4576001600160f01b038511156200038057604051632d6c337960e21b815260040160405180910390fd5b506040805180820190915261ffff91821681526001600160f01b0380861660208084019182528954600181018b555f8b81529182209451925190931662010000029190941617910155915082905062000334565b5f620003f488620003e7600185620009b8565b5f91825260209091200190565b80546201000090046001600160f01b03169550905062000416858760208a901c565b93506001600160f01b038411156200044157604051632d6c337960e21b815260040160405180910390fd5b805461ffff168311156200049f576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155620004b8565b805461ffff16620100006001600160f01b038616021781555b505050935093915050565b80545f908015620004f657620004e083620003e7600184620009b8565b546201000090046001600160a01b031662000302565b5f9392505050565b5f6001600160a01b0383161562000516578262000302565b50919050565b6001600160a01b0383165f9081526007602052604081208190620005429085856200033c565b60408051838152602081018390529294509092506001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a2935093915050565b5f620005a5600c6213c680620009ce565b620005b19043620009ce565b620005be906001620009a2565b905090565b80516001600160a01b0381168114620005da575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156200061e576200061e620005df565b604052919050565b5f6001600160401b03821115620006415762000641620005df565b5060051b60200190565b5f82601f8301126200065b575f80fd5b81516020620006746200066e8362000626565b620005f3565b82815260059290921b8401810191818101908684111562000693575f80fd5b8286015b84811015620006b0578051835291830191830162000697565b509695505050505050565b5f805f60608486031215620006ce575f80fd5b620006d984620005c3565b602085810151919450906001600160401b0380821115620006f8575f80fd5b818701915087601f8301126200070c575f80fd5b81516200071d6200066e8262000626565b81815260059190911b8301840190848101908a8311156200073c575f80fd5b938501935b8285101562000765576200075585620005c3565b8252938501939085019062000741565b60408a015190975094505050808311156200077e575f80fd5b50506200078e868287016200064b565b9150509250925092565b600181811c90821680620007ad57607f821691505b6020821081036200051657634e487b7160e01b5f52602260045260245ffd5b601f821115620002a2575f81815260208120601f850160051c81016020861015620007f45750805b601f850160051c820191505b81811015620008155782815560010162000800565b505050505050565b81516001600160401b03811115620008395762000839620005df565b62000851816200084a845462000798565b84620007cc565b602080601f83116001811462000887575f84156200086f5750858301515b5f19600386901b1c1916600185901b17855562000815565b5f85815260208120601f198616915b82811015620008b75788860151825594840194600190910190840162000896565b5085821015620008d557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f808354620008f48162000798565b600182811680156200090f5760018114620009255762000953565b60ff198416875282151583028701945062000953565b875f526020805f205f5b858110156200094a5781548a8201529084019082016200092f565b50505082870194505b50929695505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016200099b576200099b62000973565b5060010190565b80820180821115620002d557620002d562000973565b81810381811115620002d557620002d562000973565b5f82620009e957634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a05160c05161232d62000a275f395f8181610277015261074d01525f6102ea01525f818161031601526113e7015261232d5ff3fe608060405234801561000f575f80fd5b50600436106101e7575f3560e01c80635c19a95c116101095780639ab24eb01161009e578063c3cda5201161006e578063c3cda520146104ee578063d505accf14610501578063dd62ed3e14610514578063e7a324dc14610559575f80fd5b80639ab24eb0146104a2578063a457c2d7146104b5578063a9059cbb146104c8578063aaaaaa22146104db575f80fd5b80638ba613ef116100d95780638ba613ef1461045557806391ddadf41461046857806395d89b4114610487578063981b24d01461048f575f80fd5b80635c19a95c146103e757806370a08231146103fa578063740ba2181461040d5780637ecebe0014610420575f80fd5b80633644e5151161017f57806347fdc5481161014f57806347fdc548146103755780634bf5d7e9146103885780634ee2cd7e146103c1578063587cde1e146103d4575f80fd5b80633644e51514610314578063395093511461033a5780633a46b1a81461034d57806340c10f1914610360575f80fd5b806323b872dd116101ba57806323b872dd146102625780632b20e3971461027557806330adf81f146102bc578063313ce567146102e3575f80fd5b806306fdde03146101eb578063095ea7b31461020957806318160ddd1461022c5780631d60230314610242575b5f80fd5b6101f3610580565b6040516102009190611de3565b60405180910390f35b61021c610217366004611e6d565b61060f565b6040519015158152602001610200565b610234610625565b604051908152602001610200565b610255610250366004611ed8565b610635565b6040516102009190611f17565b61021c610270366004611f5a565b61067b565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b6102347f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610200565b7f0000000000000000000000000000000000000000000000000000000000000000610234565b61021c610348366004611e6d565b61069c565b61023461035b366004611e6d565b61071d565b61037361036e366004611e6d565b61074b565b005b610255610383366004611f98565b61084a565b60408051808201909152600a81527f6d6f64653d65706f63680000000000000000000000000000000000000000000060208201526101f3565b6102346103cf366004611e6d565b6108cc565b6102976103e2366004611fe9565b6108fa565b6103736103f5366004611fe9565b610904565b610234610408366004611fe9565b610911565b61025561041b366004612004565b61093e565b61023461042e366004611fe9565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610255610463366004612024565b61094c565b61047061097e565b60405165ffffffffffff9091168152602001610200565b6101f3610987565b61023461049d366004612056565b610996565b6102346104b0366004611fe9565b6109a2565b61021c6104c3366004611e6d565b6109cf565b61021c6104d6366004611e6d565b6109db565b6102976104e9366004611e6d565b6109e7565b6103736104fc366004612082565b6109f2565b61037361050f3660046120d8565b610abf565b610234610522366004612141565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260036020908152604080832093909416825291909152205490565b6102347fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60605f805461058e90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba90612178565b80156106055780601f106105dc57610100808354040283529160200191610605565b820191905f5260205f20905b8154815290600101906020018083116105e857829003601f168201915b5050505050905090565b5f61061b338484610bd7565b5060015b92915050565b5f6106306004610c44565b905090565b606061067460048484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610cbf92505050565b9392505050565b5f610687843384610e50565b610692848484610ede565b5060019392505050565b5f815f036106d6576040517f817e74f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205461061b919085906107189086906121f0565b610bd7565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600760205260408120610674908361100c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634d6d74416040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d89190612203565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461083c576040517fee3675d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610846828261108c565b5050565b60606108c460055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610cbf92505050565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600560205260408120610674908361100c565b5f61061f82611100565b61090e3382611137565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260056020526040812061061f90610c44565b6060610674600484846111ab565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526005602052604090206060906108c49084846111ab565b5f6106306112ce565b60606002805461058e90612178565b5f61061f60048361100c565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812061061f90610c44565b5f61061b338484610e50565b5f61061b338484610ede565b5f61067483836112f2565b5f6109fe87878761132a565b90505f610a0e828787878761142e565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040902054909150808803610a7e576040517f56d8d10600000000000000000000000000000000000000000000000000000000815260048101899052602481018290526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f9081526001602081905260409091209082019055610ab4828a611137565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526001602052604081205490610af2898989858a6115bb565b90505f610b02828888888861142e565b90508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614610b89576040517fefe0e68600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808c16600483015282166024820152604401610a75565b73ffffffffffffffffffffffffffffffffffffffff8a165f9081526001602081905260409091209084019055610bc08a8a8a610bd7565b50505050505050505050565b5f61067482846121f0565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80545f908015610c9657610c6a83610c5d60018461221e565b5f91825260209091200190565b546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610c98565b5f5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b80516060908067ffffffffffffffff811115610cdd57610cdd612231565b604051908082528060200260200182016040528015610d06578160200160208202803683370190505b508454909250801580610d17575081155b15610d2357505061061f565b5f84610d2e8461225e565b93508381518110610d4157610d41612292565b602002602001015190505b5f610d6a87610d5a8561225e565b9450845f91825260209091200190565b805490915061ffff165b828111610e3e5781548651620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690879087908110610db957610db9612292565b602002602001018181525050845f03610dd657505050505061061f565b5f87610de18761225e565b96508681518110610df457610df4612292565b60200260200101519050838110610e37576040517faeb1ed3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250610d74565b50505f8211610d4c5750505092915050565b805f03610e89576040517f28bd1f0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526003602090815260408083209386168352929052205460018101610ec95750505050565b610ed88484610718858561221e565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f43576040517fbf2f44f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fa291815260200190565b60405180910390a35f80610fb68584611639565b915091505f80610fd7610fc888611100565b610fd2858761221e565b611654565b9092509050610fef86610fea858761221e565b611663565b5050610ab4610ffd87611100565b611007838561221e565b611672565b81545f90808203611020575f91505061061f565b5f61103e8561102e8461225e565b9350835f91825260209091200190565b805490915061ffff16841061107d57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061061f9050565b505f8111611020575092915050565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36110e38282611663565b50506110ee81611681565b610ed86110fa83611100565b82611672565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260066020526040812061061f9061113190611694565b836116d7565b5f6111428383611700565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526005602052604081209192509061117390610c44565b9050805f036111825750505050565b5f8061118e8484611654565b90925090506111a185611007838561221e565b5050505050505050565b60605f6111b8848461221e565b6111c39060016121f0565b90508067ffffffffffffffff8111156111de576111de612231565b604051908082528060200260200182016040528015611207578160200160208202803683370190505b508554909250801580611218575081155b15611224575050610674565b835b5f61123488610d5a8561225e565b805490915061ffff165b8281116112bb5781548651620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169087908790811061128357611283612292565b602002602001018181525050845f036112a0575050505050610674565b6112a98561225e565b94506112b48361225e565b925061123e565b50505f8211611226575050509392505050565b5f6112dd600c6213c6806122bf565b6112e790436122bf565b6106309060016121f0565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600660205260408120610674906113249084611a36565b846116d7565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f906108c49060a0015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207f1901000000000000000000000000000000000000000000000000000000000000848301527f00000000000000000000000000000000000000000000000000000000000000006022850152604280850191909152825180850390910181526062909301909152815191012090565b5f84421115611472576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101869052426024820152604401610a75565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211806114b357508360ff16601b141580156114b357508360ff16601c14155b156114ea576040517ff0ad0d0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa15801561153a573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166115b2576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff8088169282019290925290851660608201526080810184905260a0810183905260c081018290525f9061162f9060e00161138a565b9695505050505050565b5f8061164884611a9c85611aa7565b915091505b9250929050565b5f8061164884611a9c85611ae5565b5f8061164884610bcc85611aa7565b5f8061164884610bcc85611ae5565b61168f6004610bcc83611b75565b505050565b80545f9080156116cf576116ad83610c5d60018461221e565b5462010000900473ffffffffffffffffffffffffffffffffffffffff16610674565b5f9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8316156116fa5782610674565b50919050565b5f61170b82846116d7565b91505f6117188385611da1565b90505f6117236112ce565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260066020526040812080549293509190819003611841578673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036117ba576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805180820190915261ffff928316815273ffffffffffffffffffffffffffffffffffffffff938416602080830191825283546001810185555f94855293209151919092018054925190941662010000027fffffffffffffffffffff00000000000000000000000000000000000000000000909216921691909117179055508161061f565b5f61185183610c5d60018561221e565b805490915061187c9062010000900473ffffffffffffffffffffffffffffffffffffffff16896116d7565b95508673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036118e3576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4805461ffff168411156119e7576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808816602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009091169390921692909217179055611a2b565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8716021781555b505050505092915050565b81545f90808203611a4a575f91505061061f565b5f611a588561102e8461225e565b805490915061ffff168410611a8d575462010000900473ffffffffffffffffffffffffffffffffffffffff16915061061f9050565b505f8111611a4a575092915050565b5f610674828461221e565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526005602052604081208190611ad8908585611b75565b915091505b935093915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526007602052604081208190611b16908585611b75565b604080518381526020810183905292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a2935093915050565b5f805f611b806112ce565b86549091505f819003611c4f577dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115611be5576040517fb5b0cde400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805180820190915261ffff91821681527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80861660208084019182528954600181018b555f8b815291822094519251909316620100000291909416179101559150829050611add565b5f611c5f88610c5d60018561221e565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050611c99858763ffffffff8a16565b93507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115611cf3576040517fb5b0cde400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805461ffff16831115611d66576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155611d96565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ddb5782610674565b505f92915050565b5f6020808352835180828501525f5b81811015611e0e57858101830151858201604001528201611df2565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461090e575f80fd5b5f8060408385031215611e7e575f80fd5b8235611e8981611e4c565b946020939093013593505050565b5f8083601f840112611ea7575f80fd5b50813567ffffffffffffffff811115611ebe575f80fd5b6020830191508360208260051b850101111561164d575f80fd5b5f8060208385031215611ee9575f80fd5b823567ffffffffffffffff811115611eff575f80fd5b611f0b85828601611e97565b90969095509350505050565b602080825282518282018190525f9190848201906040850190845b81811015611f4e57835183529284019291840191600101611f32565b50909695505050505050565b5f805f60608486031215611f6c575f80fd5b8335611f7781611e4c565b92506020840135611f8781611e4c565b929592945050506040919091013590565b5f805f60408486031215611faa575f80fd5b8335611fb581611e4c565b9250602084013567ffffffffffffffff811115611fd0575f80fd5b611fdc86828701611e97565b9497909650939450505050565b5f60208284031215611ff9575f80fd5b813561067481611e4c565b5f8060408385031215612015575f80fd5b50508035926020909101359150565b5f805f60608486031215612036575f80fd5b833561204181611e4c565b95602085013595506040909401359392505050565b5f60208284031215612066575f80fd5b5035919050565b803560ff8116811461207d575f80fd5b919050565b5f805f805f8060c08789031215612097575f80fd5b86356120a281611e4c565b955060208701359450604087013593506120be6060880161206d565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a0312156120ee575f80fd5b87356120f981611e4c565b9650602088013561210981611e4c565b955060408801359450606088013593506121256080890161206d565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215612152575f80fd5b823561215d81611e4c565b9150602083013561216d81611e4c565b809150509250929050565b600181811c9082168061218c57607f821691505b6020821081036116fa577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561061f5761061f6121c3565b5f60208284031215612213575f80fd5b815161067481611e4c565b8181038181111561061f5761061f6121c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8161226c5761226c6121c3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f826122f2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a8b63e7b724ca082cae1cb30438906c97644d224787d1fb891fbad4b238077b164736f6c63430008150033" }