UNPKG

@gooddollar/goodcontracts

Version:
751 lines 2.12 MB
{ "contractName": "CompoundVotingMachine", "abi": [ { "inputs": [ { "internalType": "contract Avatar", "name": "avatar_", "type": "address" }, { "internalType": "address", "name": "rep_", "type": "address" }, { "internalType": "uint256", "name": "votingPeriodBlocks_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ProposalCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "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": "startBlock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endBlock", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "description", "type": "string" } ], "name": "ProposalCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "eta", "type": "uint256" } ], "name": "ProposalQueued", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "support", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "votes", "type": "uint256" } ], "name": "VoteCast", "type": "event" }, { "inputs": [], "name": "BALLOT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "controller", "outputs": [ { "internalType": "contract Controller", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "guardian", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "latestProposalIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proposalCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "proposals", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "address", "name": "proposer", "type": "address" }, { "internalType": "uint256", "name": "eta", "type": "uint256" }, { "internalType": "uint256", "name": "startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "endBlock", "type": "uint256" }, { "internalType": "uint256", "name": "forVotes", "type": "uint256" }, { "internalType": "uint256", "name": "againstVotes", "type": "uint256" }, { "internalType": "bool", "name": "canceled", "type": "bool" }, { "internalType": "bool", "name": "executed", "type": "bool" }, { "internalType": "uint256", "name": "quoromRequired", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rep", "outputs": [ { "internalType": "contract ReputationInterface", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "votingPeriodBlocks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "quorumVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "proposalThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proposalMaxOperations", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "votingDelay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "votingPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "queuePeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "gameChangerPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "gracePeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "targets", "type": "address[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "string[]", "name": "signatures", "type": "string[]" }, { "internalType": "bytes[]", "name": "calldatas", "type": "bytes[]" }, { "internalType": "string", "name": "description", "type": "string" } ], "name": "propose", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "execute", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "cancel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "getActions", "outputs": [ { "internalType": "address[]", "name": "targets", "type": "address[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "string[]", "name": "signatures", "type": "string[]" }, { "internalType": "bytes[]", "name": "calldatas", "type": "bytes[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "address", "name": "voter", "type": "address" } ], "name": "getReceipt", "outputs": [ { "components": [ { "internalType": "bool", "name": "hasVoted", "type": "bool" }, { "internalType": "bool", "name": "support", "type": "bool" }, { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "internalType": "struct CompoundVotingMachine.Receipt", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "state", "outputs": [ { "internalType": "enum CompoundVotingMachine.ProposalState", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "bool", "name": "support", "type": "bool" } ], "name": "castVote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "support", "type": "bool" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct CompoundVotingMachine.VoteSig[]", "name": "votesFor", "type": "tuple[]" }, { "components": [ { "internalType": "bool", "name": "support", "type": "bool" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct CompoundVotingMachine.VoteSig[]", "name": "votesAgainst", "type": "tuple[]" } ], "name": "ecRecoverTest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "bool", "name": "support", "type": "bool" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "castVoteBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"avatar_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rep_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"votingPeriodBlocks_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"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\":\"startBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ProposalQueued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BALLOT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"}],\"name\":\"castVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"castVoteBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"internalType\":\"contract Controller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct CompoundVotingMachine.VoteSig[]\",\"name\":\"votesFor\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct CompoundVotingMachine.VoteSig[]\",\"name\":\"votesAgainst\",\"type\":\"tuple[]\"}],\"name\":\"ecRecoverTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameChangerPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"getActions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"getReceipt\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"hasVoted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundVotingMachine.Receipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gracePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"latestProposalIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalMaxOperations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"proposalThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"canceled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"quoromRequired\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queuePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorumVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rep\",\"outputs\":[{\"internalType\":\"contract ReputationInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum CompoundVotingMachine.ProposalState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingPeriodBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancel(uint256)\":{\"details\":\"could be cheating trying to bypass the single proposal per address by delegating to another address or when delegators do not concur with the proposal done in their name, they can withdraw\"},\"castVote(uint256,bool)\":{\"params\":{\"proposalId\":\"the proposal to vote on\",\"support\":\"for or against\"}},\"execute(uint256)\":{\"details\":\"anyone can call this once its ETA has arrived\"},\"propose(address[],uint256[],string[],bytes[],string)\":{\"params\":{\"calldatas\":\"the list of parameters to pass to each function\",\"signatures\":\"the list of functions to execute\",\"targets\":\"list of contracts to be excuted on\",\"values\":\"list of eth value to be used in each contract call\"},\"returns\":{\"_0\":\"uint256 proposal id\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ProposalCanceled(uint256)\":{\"notice\":\"An event emitted when a proposal has been canceled\"},\"ProposalCreated(uint256,address,address[],uint256[],string[],bytes[],uint256,uint256,string)\":{\"notice\":\"An event emitted when a new proposal is created\"},\"ProposalExecuted(uint256)\":{\"notice\":\"An event emitted when a proposal has been executed\"},\"ProposalQueued(uint256,uint256)\":{\"notice\":\"An event emitted when a proposal has been queued\"},\"VoteCast(address,uint256,bool,uint256)\":{\"notice\":\"An event emitted when a vote has been cast on a proposal\"}},\"kind\":\"user\",\"methods\":{\"BALLOT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the ballot struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"cancel(uint256)\":{\"notice\":\"cancel a proposal in case proposer no longer holds the votes that were required to propose\"},\"castVote(uint256,bool)\":{\"notice\":\"cast your vote on a proposal\"},\"castVoteBySig(uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"helper to cast a vote for someone else by using eip712 signatures\"},\"controller()\":{\"notice\":\"The address of the DAO controller\"},\"execute(uint256)\":{\"notice\":\"execute the proposal list of transactions\"},\"gameChangerPeriod()\":{\"notice\":\"During the queue period if vote decision has changed, we extend queue period so that at least gameChangerPeriod is left\"},\"getActions(uint256)\":{\"notice\":\"get the actions to be done in a proposal\"},\"getReceipt(uint256,address)\":{\"notice\":\"get the receipt of a single voter in a proposal\"},\"gracePeriod()\":{\"notice\":\"the time a succeeded proposal has to be executed on the blockchain\"},\"guardian()\":{\"notice\":\"The address of the Governor Guardian\"},\"latestProposalIds(address)\":{\"notice\":\"The latest proposal for each proposer\"},\"name()\":{\"notice\":\"The name of this contract\"},\"proposalCount()\":{\"notice\":\"The total number of proposals\"},\"proposalMaxOperations()\":{\"notice\":\"The maximum number of actions that can be included in a proposal\"},\"proposalThreshold(uint256)\":{\"notice\":\"The number of votes required in order for a voter to become a proposer\"},\"proposals(uint256)\":{\"notice\":\"The official record of all proposals ever proposed\"},\"propose(address[],uint256[],string[],bytes[],string)\":{\"notice\":\"make a proposal to be voted on\"},\"queuePeriod()\":{\"notice\":\"The duration of time after proposal passed thershold before it can be expected\"},\"quorumVotes()\":{\"notice\":\"The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\"},\"rep()\":{\"notice\":\"The address of the DAO reputation token\"},\"state(uint256)\":{\"notice\":\"get the current status of a proposal\"},\"votingDelay()\":{\"notice\":\"The delay before voting on a proposal may take place, once proposed\"},\"votingPeriod()\":{\"notice\":\"The duration of voting on a proposal, in blocks\"},\"votingPeriodBlocks()\":{\"notice\":\"the number of blocks a proposal is open for voting (before passing quorum)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol\":\"CompoundVotingMachine\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/DAOStackInterfaces.sol\":{\"keccak256\":\"0xec80b6f0ad18a184cc23b1e172a0d6bf1f1bb5404b086fef56d5beafc46aad04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ccc376680a6b45520d6158996e9c0e634c05cb374de1c6a27796afa3356bdb2\",\"dweb:/ipfs/QmZEUGR5HjF4Me6U9oXsEBeJ5PTvXe1HNNiVjVZbmhYf29\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol\":{\"keccak256\":\"0x43b69b6603e1b53e8c8e2e9eef79ef0ab3deb8a63f514507ba9067455099fe73\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40d533de44be36f547fcc47d94848533c7e0a0e989ca43a579b4a6939cf1d0b8\",\"dweb:/ipfs/QmbBRcnhfgvts4c6jwAATFg1fSyEdfMBeXTkMSejvJYxEi\"]},\"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xe9ecc18d06bcc5aa48c40a98333540248b6c1c18ecb6262329c06d3f0cbb45ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a81bcbe4f867a4eaf7ec375508a9901ea7517b9854c9a542c242050beda5127\",\"dweb:/ipfs/QmS499VRDhAgMg1pK96PiyRpP3gJZzzMcoNBbe8AV3JNw3\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b50604051620038fe380380620038fe83398101604081905262000034916200010b565b826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200007057600080fd5b505af115801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab9190620000e5565b600180546001600160a01b039283166001600160a01b0319918216179091556002805494909216931692909217909155600055506200016b565b600060208284031215620000f7578081fd5b8151620001048162000152565b9392505050565b60008060006060848603121562000120578182fd5b83516200012d8162000152565b6020850151909350620001408162000152565b80925050604084015190509250925092565b6001600160a01b03811681146200016857600080fd5b50565b613783806200017b6000396000f3fe6080604052600436106101b75760003560e01c8063739f1c6c116100ec578063d2895d161161008a578063deaaa7cc11610064578063deaaa7cc14610487578063e23a9a521461049c578063f77c4791146104c9578063fe0d94c1146104de576101b7565b8063d2895d161461043d578063da35c66414610452578063da95691a14610467576101b7565b80638b5d4b2c116100c65780638b5d4b2c146103e9578063a06db7dc146103fe578063b24b7ffd14610413578063ccc0795914610428576101b7565b8063739f1c6c146103945780637629a4ac146103b45780637bdbe4d0146103d4576101b7565b8063328dd982116101595780633e4f49e6116101335780633e4f49e61461030557806340e58ee514610332578063452a9320146103525780634634c61f14610374576101b7565b8063328dd982146102ab5780633408e470146102db5780633932abb1146102f0576101b7565b806315373e3d1161019557806315373e3d1461023f57806317977c611461026157806320606b701461028157806324bc1a6414610296576101b7565b8063013cf08b146101bc57806302a251a3146101fb57806306fdde031461021d575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046129e5565b6104f1565b6040516101f29a999897969594939291906135f3565b60405180910390f35b34801561020757600080fd5b50610210610553565b6040516101f29190612dc0565b34801561022957600080fd5b50610232610559565b6040516101f29190612e37565b34801561024b57600080fd5b5061025f61025a366004612aae565b61058b565b005b34801561026d57600080fd5b5061021061027c366004612858565b610639565b34801561028d57600080fd5b5061021061064b565b3480156102a257600080fd5b5061021061066f565b3480156102b757600080fd5b506102cb6102c63660046129e5565b610712565b6040516101f29493929190612d0c565b3480156102e757600080fd5b506102106109a1565b3480156102fc57600080fd5b506102106109a5565b34801561031157600080fd5b506103256103203660046129e5565b6109aa565b6040516101f29190612e23565b34801561033e57600080fd5b5061025f61034d3660046129e5565b610af4565b34801561035e57600080fd5b50610367610c48565b6040516101f29190612c7b565b34801561038057600080fd5b5061025f61038f366004612ad2565b610c57565b3480156103a057600080fd5b5061025f6103af366004612a44565b610e95565b3480156103c057600080fd5b506102106103cf3660046129e5565b611497565b3480156103e057600080fd5b506102106114f4565b3480156103f557600080fd5b506102106114f9565b34801561040a57600080fd5b50610210611500565b34801561041f57600080fd5b50610210611507565b34801561043457600080fd5b5061036761150d565b34801561044957600080fd5b5061021061151c565b34801561045e57600080fd5b50610210611523565b34801561047357600080fd5b50610210610482366004612874565b611529565b34801561049357600080fd5b5061021061196a565b3480156104a857600080fd5b506104bc6104b7366004612a15565b61197c565b6040516101f29190613536565b3480156104d557600080fd5b506103676119dd565b61025f6104ec3660046129e5565b6119ec565b6005602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b880154600d9098015496976001600160a01b03909616969495939492939192909160ff8082169261010090920416908a565b60005490565b60405180604001604052806016815260200175476f6f6444414f20566f74696e67204d616368696e6560501b81525081565b60008281526005602052604080822060025460078201549251635132dd2360e11b81529193926001600160a01b039091169163a265ba46916105d4913391600191600401612c8f565b60206040518083038186803b1580156105ec57600080fd5b505afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062491906129fd565b905061063233858584611c55565b50505b5050565b60066020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061070d60646107076003600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c957600080fd5b505afa1580156106dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070191906129fd565b90611dd5565b90611e16565b905090565b6060806060806000600560008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561079457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610776575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156107e657602002820191906000526020600020905b8154815260200190600101908083116107d2575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156108b95760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b50505050508152602001906001019061080e565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561098b5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109775780601f1061094c57610100808354040283529160200191610977565b820191906000526020600020905b81548152906001019060200180831161095a57829003601f168201915b5050505050815260200190600101906108e0565b5050505090509450945094509450509193509193565b4690565b600190565b600081600454101580156109be5750600082115b6109e35760405162461bcd60e51b81526004016109da9061333b565b60405180910390fd5b6000828152600560205260409020600b81015460ff1615610a08576003915050610aef565b80600701544311610a1d576000915050610aef565b600b810154610100900460ff1615610a39576007915050610aef565b60008160020154118015610a505750806002015442105b15610a5f576002915050610aef565b6002810154158015610a75575080600801544311155b15610a84576001915050610aef565b80600a01548160090154111580610aa2575080600d01548160090154105b15610ab1576004915050610aef565b60008160020154118015610ada5750610ad6610acb611500565b600283015490611e58565b4210155b15610ae9576006915050610aef565b60059150505b919050565b6000610aff826109aa565b90506007816007811115610b0f57fe5b1415610b2d5760405162461bcd60e51b81526004016109da9061338c565b60008281526005602052604090206007810154610b4990611497565b6002546001838101546001600160a01b039283169263a265ba4692911690610b714382611e7d565b6040518463ffffffff1660e01b8152600401610b8f93929190612c8f565b60206040518083038186803b158015610ba757600080fd5b505afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf91906129fd565b10610bfc5760405162461bcd60e51b81526004016109da90612e4a565b600b8101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610c3b908590612dc0565b60405180910390a1505050565b6003546001600160a01b031681565b604080518082019091526016815275476f6f6444414f20566f74696e67204d616368696e6560501b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667ff0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734610cd16109a1565b30604051602001610ce59493929190612dc9565b604051602081830303815290604052805190602001209050600060008051602061370e8339815191528787604051602001610d2293929190612ded565b60405160208183030381529060405280519060200120905060008282604051602001610d4f929190612c60565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610d8c9493929190612e05565b6020604051602081039080840390855afa158015610dae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610de15760405162461bcd60e51b81526004016109da906130c4565b60008981526005602052604080822060025460078201549251635132dd2360e11b81529193926001600160a01b039091169163a265ba4691610e2a918791600191600401612c8f565b60206040518083038186803b158015610e4257600080fd5b505afa158015610e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7a91906129fd565b9050610e88838c8c84611c55565b5050505050505050505050565b604080518082019091526016815275476f6f6444414f20566f74696e67204d616368696e6560501b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667ff0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734610f0f6109a1565b30604051602001610f239493929190612dc9565b604051602081830303815290604052805190602001209050600060008051602061370e833981519152856001604051602001610f6193929190612ded565b604051602081830303815290604052805190602001209050600060008051602061370e833981519152866000604051602001610f9f93929190612ded565b60405160208183030381529060405280519060200120905060008383604051602001610fcc929190612c60565b60405160208183030381529060405280519060200120905060008483604051602001610ff9929190612c60565b60408051601f19818403018152918152815160209283012060008b8152600590935290822090925090805b89518163ffffffff16101561121457600085905060006001828d8563ffffffff168151811061104f57fe5b6020026020010151602001518e8663ffffffff168151811061106d57fe5b6020026020010151604001518f8763ffffffff168151811061108b57fe5b602002602001015160600151604051600081526020016040526040516110b49493929190612e05565b6020604051602081039080840390855afa1580156110d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111095760405162461bcd60e51b81526004016109da906130c4565b8b8363ffffffff168151811061111b57fe5b6020026020010151600001511515600115151461114a5760405162461bcd60e51b81526004016109da90612ea7565b6002546007860154604051635132dd2360e11b81526001600160a01b039092169163a265ba4691611182918591600191600401612c8f565b60206040518083038186803b15801561119a57600080fd5b505afa1580156111ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d291906129fd565b6001600160a01b03919091166000908152600c8601602052604090208054610100600160ff19909216821761ff00191617909155930192919091019050611024565b508851156112595760008960405160200161122f9190612d64565b6040516020818303038152906040528051906020012060001c9050611257818c600185611c55565b505b506000805b88518163ffffffff16101561144857600084905060006001828c8563ffffffff168151811061128957fe5b6020026020010151602001518d8663ffffffff16815181106112a757fe5b6020026020010151604001518e8763ffffffff16815181106112c557fe5b602002602001015160600151604051600081526020016040526040516112ee9493929190612e05565b6020604051602081039080840390855afa158015611310573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113435760405162461bcd60e51b81526004016109da906130c4565b8a8363ffffffff168151811061135557fe5b6020908102919091010151511561137e5760405162461bcd60e51b81526004016109da906134c4565b6002546007860154604051635132dd2360e11b81526001600160a01b039092169163a265ba46916113b6918591600191600401612c8f565b60206040518083038186803b1580156113ce57600080fd5b505afa1580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140691906129fd565b6001600160a01b03919091166000908152600c8601602052604090208054610100600160ff19909216821761ff0019161790915593019291909101905061125e565b5087511561148b576000886040516020016114639190612d64565b6040516020818303038152906040528051906020012060001c9050610e88818c600085611c55565b50505050505050505050565b600254604051630981b24d60e41b81526000916114ee91606491610707916001916001600160a01b03169063981b24d0906114d6908990600401612dc0565b60206040518083038186803b1580156106c957600080fd5b92915050565b600a90565b6202a30090565b6203f48090565b60005481565b6002546001600160a01b031681565b6201518090565b60045481565b60006115396103cf436001611e7d565b6002546001600160a01b031663a265ba463360016115574382611e7d565b6040518463ffffffff1660e01b815260040161157593929190612c8f565b60206040518083038186803b15801561158d57600080fd5b505afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c591906129fd565b116115e25760405162461bcd60e51b81526004016109da90613227565b845186511480156115f4575083518651145b8015611601575082518651145b61161d5760405162461bcd60e51b81526004016109da906133e9565b855161163b5760405162461bcd60e51b81526004016109da906132f9565b6116436114f4565b865111156116635760405162461bcd60e51b81526004016109da90613086565b3360009081526006602052604090205480156116f8576000611684826109aa565b9050600181600781111561169457fe5b141580156116ae575060028160078111156116ab57fe5b14155b6116ca5760405162461bcd60e51b81526004016109da90612f67565b60008160078111156116d857fe5b14156116f65760405162461bcd60e51b81526004016109da90613449565b505b600061170c6117056109a5565b4390611e58565b9050600061172261171b610553565b8390611e58565b600480546001019055905061173561229a565b604051806101c001604052806004548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581526020016117ab61066f565b9052805160009081526005602090815260409182902083518155818401516001820180546001600160a01b0319166001600160a01b0390921691909117905591830151600283015560608301518051939450849361180f9260038501920190612316565b506080820151805161182b91600484019160209091019061237b565b5060a082015180516118479160058401916020909101906123c2565b5060c0820151805161186391600684019160209091019061241b565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff0219169083151502179055506101a082015181600d015590505080600001516006600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516119549998979695949392919061355b565b60405180910390a1519998505050505050505050565b60008051602061370e83398151915281565b611984612474565b5060009182526005602090815260408084206001600160a01b03939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6001546001600160a01b031681565b60056119f7826109aa565b6007811115611a0257fe5b14611a1f5760405162461bcd60e51b81526004016109da90613010565b600081815260056020526040902060020154421015611a505760405162461bcd60e51b81526004016109da90613282565b6000818152600560205260408120600b8101805461ff001916610100179055905b6003820154811015611c1957611c10826003018281548110611a8f57fe5b6000918252602090912001546004840180546001600160a01b039092169184908110611ab757fe5b9060005260206000200154846005018481548110611ad157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611b5f5780601f10611b3457610100808354040283529160200191611b5f565b820191906000526020600020905b815481529060010190602001808311611b4257829003601f168201915b5050505050856006018581548110611b7357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c015780601f10611bd657610100808354040283529160200191611c01565b820191906000526020600020905b815481529060010190602001808311611be457829003601f168201915b50505050508660020154611ebf565b50600101611a71565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611c499190612dc0565b60405180910390a15050565b6001611c60846109aa565b6007811115611c6b57fe5b1480611c8a57506002611c7d846109aa565b6007811115611c8857fe5b145b611ca65760405162461bcd60e51b81526004016109da90612f15565b60008381526005602090815260408083206001600160a01b0388168452600c8101909252909120805460ff1615611cef5760405162461bcd60e51b81526004016109da90613191565b600a8201546009830154118415611d19576009830154611d0f9085611e58565b6009840155611d2e565b600a830154611d289085611e58565b600a8401555b600a8301546009840180548454600160ff19909116811761ff0019166101008a1515021786558501879055600d86015491549210921515929092141591111580611d80575082600d015483600a015410155b15611d8f57611d8f868261216e565b7f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4687878787604051611dc49493929190612ce4565b60405180910390a150505050505050565b600082611de4575060006114ee565b82820282848281611df157fe5b0414611e0f5760405162461bcd60e51b81526004016109da906131e6565b9392505050565b6000611e0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612237565b600082820183811015611e0f5760405162461bcd60e51b81526004016109da90612fd9565b6000611e0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061226e565b606080845160001415611ed3575082611eff565b848051906020012084604051602001611eed929190612c13565b60405160208183030381529060405290505b6001546000906060906001600160a01b038a811691161415611f8157886001600160a01b03168884604051611f349190612c44565b60006040518083038185875af1925050503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b509092509050612145565b600160009054906101000a90046001600160a01b03166001600160a01b0316635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b158015611fcf57600080fd5b505afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200791906129c9565b6001600160a01b03166108fc899081150290604051600060405180830381858888f1935050505015801561203f573d6000803e3d6000fd5b5060015460408051632d77bef360e11b815290516001600160a01b039092169163d1b7089a918c9187918591635aef7de691600480820192602092909190829003018186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c991906129c9565b8c6040518563ffffffff1660e01b81526004016120e99493929190612cb0565b600060405180830381600087803b15801561210357600080fd5b505af1158015612117573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261213f9190810190612940565b90925090505b816121625760405162461bcd60e51b81526004016109da90613121565b98975050505050505050565b600082815260056020526040902060028101546121a1576121976121906114f9565b429