{
  "contractName": "AbsoluteVote",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_isProxyVote",
          "type": "bool"
        }
      ],
      "name": "AVVoteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        }
      ],
      "name": "CancelProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "CancelVoting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_decision",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_totalReputation",
          "type": "uint256"
        }
      ],
      "name": "ExecuteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_paramsHash",
          "type": "bytes32"
        }
      ],
      "name": "NewProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_reputation",
          "type": "uint256"
        }
      ],
      "name": "VoteProposal",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_NUM_OF_CHOICES",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "organizations",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "precReq",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voteOnBehalf",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "organizationId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "open",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "callbacks",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "numOfChoices",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "paramsHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "totalVotes",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proposalsCnt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_vote",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "vote",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "cancelVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getNumberOfChoices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "voteInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_choice",
          "type": "uint256"
        }
      ],
      "name": "voteStatus",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "isVotable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isAbstainAllow",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowedRangeOfChoices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_precReq",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_precReq",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_isProxyVote\",\"type\":\"bool\"}],\"name\":\"AVVoteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"}],\"name\":\"CancelProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"CancelVoting\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_decision\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_totalReputation\",\"type\":\"uint256\"}],\"name\":\"ExecuteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_numOfChoices\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_paramsHash\",\"type\":\"bytes32\"}],\"name\":\"NewProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_vote\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_reputation\",\"type\":\"uint256\"}],\"name\":\"VoteProposal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_NUM_OF_CHOICES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"cancelVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowedRangeOfChoices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"getNumberOfChoices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_precReq\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_voteOnBehalf\",\"type\":\"address\"}],\"name\":\"getParametersHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAbstainAllow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"isVotable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"organizations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"precReq\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voteOnBehalf\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"organizationId\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"callbacks\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"numOfChoices\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"paramsHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalVotes\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalsCnt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_numOfChoices\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_paramsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_precReq\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_voteOnBehalf\",\"type\":\"address\"}],\"name\":\"setParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_vote\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"voteInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_choice\",\"type\":\"uint256\"}],\"name\":\"voteStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"cancelVote(bytes32)\":{\"details\":\"Cancel the vote of the msg.sender: subtract the reputation amount from the votes and delete the voter from the proposal struct\",\"params\":{\"_proposalId\":\"id of the proposal\"}},\"execute(bytes32)\":{\"details\":\"execute check if the proposal has been decided, and if so, execute the proposal\",\"params\":{\"_proposalId\":\"the id of the proposal\"},\"return\":\"bool true - the proposal has been executed             false - otherwise.\"},\"getAllowedRangeOfChoices()\":{\"details\":\"getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\",\"return\":\"min - minimum number of choices max - maximum number of choices\"},\"getNumberOfChoices(bytes32)\":{\"details\":\"getNumberOfChoices returns the number of choices possible in this proposal excluding the abstain vote (0)\",\"params\":{\"_proposalId\":\"the ID of the proposal\"},\"return\":\"uint256 that contains number of choices\"},\"getParametersHash(uint256,address)\":{\"details\":\"hashParameters returns a hash of the given parameters\"},\"isAbstainAllow()\":{\"details\":\"isAbstainAllow returns if the voting machine allow abstain (0)\",\"return\":\"bool true or false\"},\"isVotable(bytes32)\":{\"details\":\"isVotable check if the proposal is votable\",\"params\":{\"_proposalId\":\"the ID of the proposal\"},\"return\":\"bool true or false\"},\"propose(uint256,bytes32,address,address)\":{\"details\":\"register a new proposal with the given parameters. Every proposal has a unique ID which is being generated by calculating keccak256 of a incremented counter.\",\"params\":{\"_numOfChoices\":\"number of voting choices\",\"_organization\":\"address\",\"_paramsHash\":\"defined the parameters of the voting machine used for this proposal\"},\"return\":\"proposal's id.\"},\"setParameters(uint256,address)\":{\"details\":\"hash the parameters, save them if necessary, and return the hash value\"},\"vote(bytes32,uint256,uint256,address)\":{\"details\":\"voting function\",\"params\":{\"_amount\":\"the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\",\"_proposalId\":\"id of the proposal\",\"_vote\":\"a value between 0 to and the proposal number of choices.\",\"_voter\":\"voter address\"},\"return\":\"bool true - the proposal has been executed             false - otherwise.\"},\"voteInfo(bytes32,address)\":{\"details\":\"voteInfo returns the vote and the amount of reputation of the user committed to this proposal\",\"params\":{\"_proposalId\":\"the ID of the proposal\",\"_voter\":\"the address of the voter\"},\"return\":\"uint256 vote - the voters vote       uint256 reputation - amount of reputation committed by _voter to _proposalId\"},\"voteStatus(bytes32,uint256)\":{\"details\":\"voteStatus returns the reputation voted for a proposal for a specific voting choice.\",\"params\":{\"_choice\":\"the index in the\",\"_proposalId\":\"the ID of the proposal\"},\"return\":\"voted reputation for the given choice\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@daostack/infra/contracts/votingMachines/AbsoluteVote.sol\":\"AbsoluteVote\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzz-raw://8856852c8fe0ba1c9aab326f0a9a6e7f31a238de2778fa5188e6fc399f7eb352\",\"dweb:/ipfs/QmVH4ppR9Dk7v8yxaSgeArdMv9gBBVoQxEf4E3UsqQ4rY2\"]},\"@daostack/infra/contracts/votingMachines/AbsoluteVote.sol\":{\"keccak256\":\"0x5e6a9d2d70bd86115d82abc3b294672cddc7f49f0dbad93af28c5e0133a3586e\",\"urls\":[\"bzz-raw://3ddc8aa9998a57cd5f9b85a016a1fe2086abb6e7adde209ded6a16cfc5480d97\",\"dweb:/ipfs/QmaxttQizPNWZDNeX3TBWa4jmHavm6We8MLZpmcPy21rGS\"]},\"@daostack/infra/contracts/votingMachines/IntVoteInterface.sol\":{\"keccak256\":\"0x877991da94b1fe9c2accf69367b32fff474c4e4f7897e9cf5a61fa5d1378908f\",\"urls\":[\"bzz-raw://4ea2c35248b82ea74884313752870789de61b0bcbc14425e97192b1ef1450e5a\",\"dweb:/ipfs/QmZ9RxpmG6SsMLJm1hT9ZmVy3CVPNZyRihQxZFDk8u3w1G\"]},\"@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol\":{\"keccak256\":\"0xb80a153793e1723b35e70ba1c3800975fbc1fae63c989cfb8134a4e58085e181\",\"urls\":[\"bzz-raw://7ea97373ca977623d4c480c1d03e0853b1b34d59df4928ef72548987b2943899\",\"dweb:/ipfs/QmZ1MmDX4ExZ1iEo9gFp3SHfpNjWoLHS9nVhFkTRokgoLS\"]},\"@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol\":{\"keccak256\":\"0xec215d305f0aa5a5193b6f0302a1aa6bb84e85460167f80b261faf9d30564563\",\"urls\":[\"bzz-raw://8edb25b20c86a28b5c7c7c3a918f219106a1d3047933984dd76e33e30911857d\",\"dweb:/ipfs/Qme1iBcLjPPrC6jMF56cSE9pmEdCQ23aT43wQbnqKjXEYe\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610fe3806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806351d997b2116100a2578063a003651d11610071578063a003651d1461031a578063b451291314610337578063ba51b14e1461035a578063c083510614610393578063e751f271146103b05761010b565b806351d997b2146102b157806388737b5e146102b95780638d22651e146102f35780639525c0cc146102fb5761010b565b8063289647e4116100de578063289647e4146101d957806332ed5b1214610205578063359afa491461025d5780635142bc1e146102a95761010b565b80630250680414610110578063119ce91b1461014e57806321b4b3dc1461019357806323d840f5146101ad575b600080fd5b61012d6004803603602081101561012657600080fd5b50356103cd565b604080519283526001600160a01b0390911660208301528051918290030190f35b61017a6004803603604081101561016457600080fd5b50803590602001356001600160a01b03166103ef565b6040805192835260208301919091528051918290030190f35b61019b610440565b60408051918252519081900360200190f35b61019b600480360360408110156101c357600080fd5b50803590602001356001600160a01b0316610446565b61019b600480360360408110156101ef57600080fd5b50803590602001356001600160a01b03166104c2565b6102226004803603602081101561021b57600080fd5b5035610501565b6040805196875294151560208701526001600160a01b03909316858501526060850191909152608084015260a0830152519081900360c00190f35b6102956004803603608081101561027357600080fd5b50803590602081013590604081013590606001356001600160a01b0316610541565b604080519115158252519081900360200190f35b61017a6105f7565b6102956105ff565b61019b600480360360808110156102cf57600080fd5b508035906020810135906001600160a01b0360408201358116916060013516610604565b61019b610824565b6103186004803603602081101561031157600080fd5b5035610829565b005b61019b6004803603602081101561033057600080fd5b5035610858565b61019b6004803603604081101561034d57600080fd5b508035906020013561086d565b6103776004803603602081101561037057600080fd5b503561088e565b604080516001600160a01b039092168252519081900360200190f35b610295600480360360208110156103a957600080fd5b50356108a9565b610295600480360360208110156103c657600080fd5b50356108c2565b600060208190529081526040902080546001909101546001600160a01b031682565b6000806103fa610f48565b50505060008281526001602081815260408084206001600160a01b0386168552600601825292839020835180850190945280548085529201549201829052909250929050565b60035481565b6000606483111580156104595750600083115b61046257600080fd5b600061046e84846104c2565b6040805180820182529586526001600160a01b039485166020808801918252600084815290819052919091209551865551600190950180546001600160a01b03191695909416949094179092555090919050565b6040805160208082019490945260609290921b6bffffffffffffffffffffffff1916828201528051808303603401815260549092019052805191012090565b60016020819052600091825260409091208054918101546002820154600383015460049093015460ff8316936101009093046001600160a01b0316929086565b600084815260016020819052604082200154859060ff1661056157600080fd5b6000868152600160205260409020610577610f62565b506003810154600090815260208181526040808320815180830190925280548252600101546001600160a01b03169181018290529190156105db5781602001516001600160a01b0316336001600160a01b0316146105d457600080fd5b50846105de565b50335b6105ea89828a8a6108f4565b9998505050505050505050565b6000600a9091565b600190565b60008381526020819052604081205461061c57600080fd5b60008511801561062d5750600a8511155b61063657600080fd5b600354604080513060601b602080830191909152603480830185905283518084039091018152605490920190925280519101209061067b90600163ffffffff610b5f16565b600355610686610f79565b606081810188815260808301888152336040808601828152815192861b602084810191909152958a901b6bffffffffffffffffffffffff191660348401528151808403602801815260489093018252825192860192909220865260018587018181526000898152828852838120895180825592519381018054965160ff1990971694151594909417610100600160a81b0319166101006001600160a01b03978816021790935595516002808401919091559451600383015560a0880151600490920191909155845291909352902054166107b7576001600160a01b03841661078d578051600090815260026020526040902080546001600160a01b031916331790556107b7565b8051600090815260026020526040902080546001600160a01b0319166001600160a01b0386161790555b80516000908152600260209081526040918290205482518a8152339281019290925281830189905291516001600160a01b039092169184917f75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c919081900360600190a35095945050505050565b600a81565b60008181526001602081905260409091200154819060ff1661084a57600080fd5b6108548233610b78565b5050565b60009081526001602052604090206002015490565b60009182526001602090815260408084209284526005909201905290205490565b6002602052600090815260409020546001600160a01b031681565b6000908152600160208190526040909120015460ff1690565b600081815260016020819052604082200154829060ff166108e257600080fd5b6108eb83610c7d565b91505b50919050565b6000848152600160205260408120600281015484111561091357600080fd5b600181015460408051634ac41bc760e11b81526001600160a01b038881166004830152602482018a90529151600093610100900490921691639588378e91604480820192602092909190829003018186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d602081101561099b57600080fd5b50519050806109f1576040805162461bcd60e51b815260206004820152601b60248201527f5f766f746572206d75737420686176652072657075746174696f6e0000000000604482015290519081900360640190fd5b838110156109fe57600080fd5b8380610a075750805b6001600160a01b038716600090815260068401602052604090206001015415610a3457610a348888610b78565b6000868152600584016020526040902054610a5690829063ffffffff610b5f16565b60008781526005850160205260409020556004830154610a7d90829063ffffffff610b5f16565b600484015560408051808201825287815260208082018481526001600160a01b03808c16600081815260068a0185528681209551865592516001909501949094558754825260028352908490205484518b8152928301869052845193949116928c927f066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e92908290030190a4604080516001600160a01b0389163314158152905189917fe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52919081900360200190a2610b5388610c7d565b98975050505050505050565b600082820183811015610b7157600080fd5b9392505050565b6000828152600160205260409020610b8e610f48565b506001600160a01b03821660009081526006820160209081526040808320815180830183528154808252600190920154818501819052918552600586019093529220549091610be3919063ffffffff610ec516565b815160009081526005840160209081526040909120919091558101516004830154610c139163ffffffff610ec516565b60048301556001600160a01b03808416600081815260068501602090815260408083208381556001018390558654835260029091528082205490519293169187917f0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c891a450505050565b600081815260016020819052604082200154829060ff16610c9d57600080fd5b600083815260016020818152604080842092830154815163b551c37360e01b81526004810189905291519394936101009091046001600160a01b03169263b551c3739260248082019391829003018186803b158015610cfb57600080fd5b505afa158015610d0f573d6000803e3d6000fd5b505050506040513d6020811015610d2557600080fd5b505160038301546000908152602081905260408120549192505b83600201548111610eb85760008181526005850160205260409020546064840483021015610eb057610d6f610f79565b506040805160c08101825285548152600186015460ff81161515602083015261010090046001600160a01b0316918101919091526002850154606082015260038501546080820152600485015460a0820152610dca88610eda565b805160009081526002602090815260409182902054825185815291820187905282516001600160a01b03909116928b927f37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10929081900390910190a380604001516001600160a01b0316639d4c162d89846040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b505050506040513d6020811015610ea157600080fd5b505196506108ee945050505050565b600101610d3f565b5060009695505050505050565b600082821115610ed457600080fd5b50900390565b6000818152600160205260408120905b81600201548111610f0e576000818152600583016020526040812055600101610eea565b50506000908152600160208190526040822082815590810180546001600160a81b0319169055600281018290556003810182905560040155565b604051806040016040528060008152602001600081525090565b604080518082019091526000808252602082015290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529056fea265627a7a723158201c5d9d5aded9e65e1547f89ec165d914337d44fede6bade679e30b4fb305778164736f6c63430005100032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806351d997b2116100a2578063a003651d11610071578063a003651d1461031a578063b451291314610337578063ba51b14e1461035a578063c083510614610393578063e751f271146103b05761010b565b806351d997b2146102b157806388737b5e146102b95780638d22651e146102f35780639525c0cc146102fb5761010b565b8063289647e4116100de578063289647e4146101d957806332ed5b1214610205578063359afa491461025d5780635142bc1e146102a95761010b565b80630250680414610110578063119ce91b1461014e57806321b4b3dc1461019357806323d840f5146101ad575b600080fd5b61012d6004803603602081101561012657600080fd5b50356103cd565b604080519283526001600160a01b0390911660208301528051918290030190f35b61017a6004803603604081101561016457600080fd5b50803590602001356001600160a01b03166103ef565b6040805192835260208301919091528051918290030190f35b61019b610440565b60408051918252519081900360200190f35b61019b600480360360408110156101c357600080fd5b50803590602001356001600160a01b0316610446565b61019b600480360360408110156101ef57600080fd5b50803590602001356001600160a01b03166104c2565b6102226004803603602081101561021b57600080fd5b5035610501565b6040805196875294151560208701526001600160a01b03909316858501526060850191909152608084015260a0830152519081900360c00190f35b6102956004803603608081101561027357600080fd5b50803590602081013590604081013590606001356001600160a01b0316610541565b604080519115158252519081900360200190f35b61017a6105f7565b6102956105ff565b61019b600480360360808110156102cf57600080fd5b508035906020810135906001600160a01b0360408201358116916060013516610604565b61019b610824565b6103186004803603602081101561031157600080fd5b5035610829565b005b61019b6004803603602081101561033057600080fd5b5035610858565b61019b6004803603604081101561034d57600080fd5b508035906020013561086d565b6103776004803603602081101561037057600080fd5b503561088e565b604080516001600160a01b039092168252519081900360200190f35b610295600480360360208110156103a957600080fd5b50356108a9565b610295600480360360208110156103c657600080fd5b50356108c2565b600060208190529081526040902080546001909101546001600160a01b031682565b6000806103fa610f48565b50505060008281526001602081815260408084206001600160a01b0386168552600601825292839020835180850190945280548085529201549201829052909250929050565b60035481565b6000606483111580156104595750600083115b61046257600080fd5b600061046e84846104c2565b6040805180820182529586526001600160a01b039485166020808801918252600084815290819052919091209551865551600190950180546001600160a01b03191695909416949094179092555090919050565b6040805160208082019490945260609290921b6bffffffffffffffffffffffff1916828201528051808303603401815260549092019052805191012090565b60016020819052600091825260409091208054918101546002820154600383015460049093015460ff8316936101009093046001600160a01b0316929086565b600084815260016020819052604082200154859060ff1661056157600080fd5b6000868152600160205260409020610577610f62565b506003810154600090815260208181526040808320815180830190925280548252600101546001600160a01b03169181018290529190156105db5781602001516001600160a01b0316336001600160a01b0316146105d457600080fd5b50846105de565b50335b6105ea89828a8a6108f4565b9998505050505050505050565b6000600a9091565b600190565b60008381526020819052604081205461061c57600080fd5b60008511801561062d5750600a8511155b61063657600080fd5b600354604080513060601b602080830191909152603480830185905283518084039091018152605490920190925280519101209061067b90600163ffffffff610b5f16565b600355610686610f79565b606081810188815260808301888152336040808601828152815192861b602084810191909152958a901b6bffffffffffffffffffffffff191660348401528151808403602801815260489093018252825192860192909220865260018587018181526000898152828852838120895180825592519381018054965160ff1990971694151594909417610100600160a81b0319166101006001600160a01b03978816021790935595516002808401919091559451600383015560a0880151600490920191909155845291909352902054166107b7576001600160a01b03841661078d578051600090815260026020526040902080546001600160a01b031916331790556107b7565b8051600090815260026020526040902080546001600160a01b0319166001600160a01b0386161790555b80516000908152600260209081526040918290205482518a8152339281019290925281830189905291516001600160a01b039092169184917f75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c919081900360600190a35095945050505050565b600a81565b60008181526001602081905260409091200154819060ff1661084a57600080fd5b6108548233610b78565b5050565b60009081526001602052604090206002015490565b60009182526001602090815260408084209284526005909201905290205490565b6002602052600090815260409020546001600160a01b031681565b6000908152600160208190526040909120015460ff1690565b600081815260016020819052604082200154829060ff166108e257600080fd5b6108eb83610c7d565b91505b50919050565b6000848152600160205260408120600281015484111561091357600080fd5b600181015460408051634ac41bc760e11b81526001600160a01b038881166004830152602482018a90529151600093610100900490921691639588378e91604480820192602092909190829003018186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d602081101561099b57600080fd5b50519050806109f1576040805162461bcd60e51b815260206004820152601b60248201527f5f766f746572206d75737420686176652072657075746174696f6e0000000000604482015290519081900360640190fd5b838110156109fe57600080fd5b8380610a075750805b6001600160a01b038716600090815260068401602052604090206001015415610a3457610a348888610b78565b6000868152600584016020526040902054610a5690829063ffffffff610b5f16565b60008781526005850160205260409020556004830154610a7d90829063ffffffff610b5f16565b600484015560408051808201825287815260208082018481526001600160a01b03808c16600081815260068a0185528681209551865592516001909501949094558754825260028352908490205484518b8152928301869052845193949116928c927f066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e92908290030190a4604080516001600160a01b0389163314158152905189917fe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52919081900360200190a2610b5388610c7d565b98975050505050505050565b600082820183811015610b7157600080fd5b9392505050565b6000828152600160205260409020610b8e610f48565b506001600160a01b03821660009081526006820160209081526040808320815180830183528154808252600190920154818501819052918552600586019093529220549091610be3919063ffffffff610ec516565b815160009081526005840160209081526040909120919091558101516004830154610c139163ffffffff610ec516565b60048301556001600160a01b03808416600081815260068501602090815260408083208381556001018390558654835260029091528082205490519293169187917f0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c891a450505050565b600081815260016020819052604082200154829060ff16610c9d57600080fd5b600083815260016020818152604080842092830154815163b551c37360e01b81526004810189905291519394936101009091046001600160a01b03169263b551c3739260248082019391829003018186803b158015610cfb57600080fd5b505afa158015610d0f573d6000803e3d6000fd5b505050506040513d6020811015610d2557600080fd5b505160038301546000908152602081905260408120549192505b83600201548111610eb85760008181526005850160205260409020546064840483021015610eb057610d6f610f79565b506040805160c08101825285548152600186015460ff81161515602083015261010090046001600160a01b0316918101919091526002850154606082015260038501546080820152600485015460a0820152610dca88610eda565b805160009081526002602090815260409182902054825185815291820187905282516001600160a01b03909116928b927f37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10929081900390910190a380604001516001600160a01b0316639d4c162d89846040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b505050506040513d6020811015610ea157600080fd5b505196506108ee945050505050565b600101610d3f565b5060009695505050505050565b600082821115610ed457600080fd5b50900390565b6000818152600160205260408120905b81600201548111610f0e576000818152600583016020526040812055600101610eea565b50506000908152600160208190526040822082815590810180546001600160a81b0319169055600281018290556003810182905560040155565b604051806040016040528060008152602001600081525090565b604080518082019091526000808252602082015290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529056fea265627a7a723158201c5d9d5aded9e65e1547f89ec165d914337d44fede6bade679e30b4fb305778164736f6c63430005100032",
  "sourceMap": "237:11657:64:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:11657:64;;;;;;;",
  "deployedSourceMap": "237:11657:64:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:11657:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1146:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1146:46:64;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1146:46:64;;;;;;;;;;;;;;;;5870:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5870:211:64;;;;;;-1:-1:-1;;;;;5870:211:64;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1456:27;;;:::i;:::-;;;;;;;;;;;;;;;;7433:392;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7433:392:64;;;;;;-1:-1:-1;;;;;7433:392:64;;:::i;7913:173::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7913:173:64;;;;;;-1:-1:-1;;;;;7913:173:64;;:::i;1238:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1238:43:64;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1238:43:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3813:608;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3813:608:64;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3813:608:64;;:::i;:::-;;;;;;;;;;;;;;;;;;7198:131;;;:::i;6904:82::-;;;:::i;2118:1282::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2118:1282:64;;;;;;;;-1:-1:-1;;;;;2118:1282:64;;;;;;;;;;;;:::i;1403:47::-;;;:::i;4624:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4624:131:64;;:::i;:::-;;5385:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5385:139:64;;:::i;6341:150::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6341:150:64;;;;;;;:::i;1350:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1350:46:64;;:::i;:::-;;;;-1:-1:-1;;;;;1350:46:64;;;;;;;;;;;;;;6653:120;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6653:120:64;;:::i;5019:127::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5019:127:64;;:::i;1146:46::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1146:46:64;;:::o;5870:211::-;5947:4;5953;5969:18;;:::i;:::-;-1:-1:-1;;;5990:22:64;;;;:9;:22;;;;;;;;-1:-1:-1;;;;;5990:37:64;;;;:29;;:37;;;;;;5969:58;;;;;;;;;;;;;;;;;;;;;;5870:211;;;;;:::o;1456:27::-;;;;:::o;7433:392::-;7512:7;7551:3;7539:8;:15;;:31;;;;;7569:1;7558:8;:12;7539:31;7531:40;;;;;;7581:24;7608:42;7626:8;7636:13;7608:17;:42::i;:::-;7691:94;;;;;;;;;;;-1:-1:-1;;;;;7691:94:64;;;;;;;;;;-1:-1:-1;7660:28:64;;;;;;;;;;;:125;;;;;;;;;;;-1:-1:-1;;;;;;7660:125:64;;;;;;;;;;;;-1:-1:-1;7660:28:64;;7433:392;-1:-1:-1;7433:392:64:o;7913:173::-;8037:41;;;;;;;;;;;;;;;;-1:-1:-1;;8037:41:64;;;;;;;26:21:-1;;;22:32;;6:49;;8037:41:64;;;;;;8027:52;;;;;;7913:173::o;1238:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1238:43:64;;;;:::o;3813:608::-;3991:4;1660:22;;;:9;:22;;;;;;;:27;;3962:11;;1660:27;;1652:36;;;;;;4016:25;4044:22;;;:9;:22;;;;;4076:24;;:::i;:::-;-1:-1:-1;4114:19:64;;;;4103:10;:31;;;;;;;;;;;4076:58;;;;;;;;;;;;;;;-1:-1:-1;;;;;4076:58:64;;;;;;;;4103:10;4171:33;4167:183;;4242:6;:19;;;-1:-1:-1;;;;;4228:33:64;:10;-1:-1:-1;;;;;4228:33:64;;4220:42;;;;;;-1:-1:-1;4284:6:64;4167:183;;;-1:-1:-1;4329:10:64;4167:183;4366:48;4379:11;4392:5;4399;4406:7;4366:12;:48::i;:::-;4359:55;3813:608;-1:-1:-1;;;;;;;;;3813:608:64:o;7198:131::-;7256:11;1448:2;7198:131;;:::o;6904:82::-;6975:4;6904:82;:::o;2118:1282::-;2244:7;2328:23;;;;;;;;;;:31;2320:44;;;;;;2398:1;2382:13;:17;:56;;;;;1448:2;2403:13;:35;;2382:56;2374:65;;;;;;2536:12;;2513:36;;;2530:4;2513:36;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2513:36:64;;;;;;;2503:47;;;;;;2575:19;;2592:1;2575:19;:16;:19;:::i;:::-;2560:12;:34;2630:24;;:::i;:::-;2664:21;;;;:37;;;2711:19;;;:33;;;2775:10;2754:18;;;;:31;;;2831:43;;;;;-1:-1:-1;2831:43:64;;;;;;;;;;;-1:-1:-1;;2831:43:64;;;;;;;26:21:-1;;;22:32;;6:49;;2831:43:64;;;;;;2821:54;;;;;;;;;2795:80;;2901:4;2885:13;;;:20;;;-1:-1:-1;2915:21:64;;;;;;;;;:32;;;;;;;;;;;;;;-1:-1:-1;;2915:32:64;;;;;;;;;;-1:-1:-1;;;;;;2915:32:64;;-1:-1:-1;;;;;2915:32:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2961:38;;;;;;;;;;2957:292;;-1:-1:-1;;;;;3033:27:64;;3029:210;;3094:23;;3080:38;;;;:13;:38;;;;;:51;;-1:-1:-1;;;;;;3080:51:64;3121:10;3080:51;;;3029:210;;;3184:23;;3170:38;;;;:13;:38;;;;;:54;;-1:-1:-1;;;;;;3170:54:64;-1:-1:-1;;;;;3170:54:64;;;;;3029:210;3301:23;;3287:38;;;;:13;:38;;;;;;;;;;3263:103;;;;;3342:10;3263:103;;;;;;;;;;;;;;;-1:-1:-1;;;;;3287:38:64;;;;3275:10;;3263:103;;;;;;;;;;-1:-1:-1;3383:10:64;2118:1282;-1:-1:-1;;;;;2118:1282:64:o;1403:47::-;1448:2;1403:47;:::o;4624:131::-;1660:22;;;;:9;:22;;;;;;;;:27;;4682:11;;1660:27;;1652:36;;;;;;4705:43;4724:11;4737:10;4705:18;:43::i;:::-;4624:131;;:::o;5385:139::-;5456:7;5482:22;;;:9;:22;;;;;:35;;;;5385:139::o;6341:150::-;6421:7;6447:22;;;:9;:22;;;;;;;;:37;;;:28;;;;:37;;;;;;6341:150::o;1350:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1350:46:64;;:::o;6653:120::-;6715:4;6739:22;;;:9;:22;;;;;;;;:27;;;;;6653:120::o;5019:127::-;5095:4;1660:22;;;:9;:22;;;;;;;:27;;5074:11;;1660:27;;1652:36;;;;;;5118:21;5127:11;5118:8;:21::i;:::-;5111:28;;1698:1;5019:127;;;;:::o;10554:1338::-;10659:4;10703:22;;;:9;:22;;;;;10781:21;;;;10772:30;;;10764:39;;;;;;10912:18;;;;10880:85;;;-1:-1:-1;;;10880:85:64;;-1:-1:-1;;;;;10880:85:64;;;;;;;;;;;;;;;-1:-1:-1;;10912:18:64;;;;;;;10880:64;;:85;;;;;;;;;;;;;;;10912:18;10880:85;;;5:2:-1;;;;30:1;27;20:12;5:2;10880:85:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10880:85:64;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10880:85:64;;-1:-1:-1;10983:14:64;10975:54;;;;;-1:-1:-1;;;10975:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;11061:4;11047:10;:18;;11039:27;;;;;;11090:4;11108:8;11104:55;;-1:-1:-1;11138:10:64;11104:55;-1:-1:-1;;;;;11239:23:64;;;;;;:15;;;:23;;;;;:34;;;:39;11235:109;;11294:39;11313:11;11326:6;11294:18;:39::i;:::-;11415:21;;;;:14;;;:21;;;;;;11407:30;;:3;;:30;:7;:30;:::i;:::-;11383:21;;;;:14;;;:21;;;;;:54;11477:19;;;;11469:28;;:3;;:28;:7;:28;:::i;:::-;11447:19;;;:50;11533:71;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11507:23:64;;;-1:-1:-1;11507:23:64;;;:15;;;:23;;;;;:97;;;;;;;;;;;;;;11677:23;;11663:38;;:13;:38;;;;;;;11637:85;;;;;;;;;;;;;11507:23;;11663:38;;;11650:11;;11637:85;;;;;;;;;11737:51;;;-1:-1:-1;;;;;11766:20:64;;11776:10;11766:20;;11737:51;;;;11752:11;;11737:51;;;;;;;;;;11864:21;11873:11;11864:8;:21::i;:::-;11857:28;10554:1338;-1:-1:-1;;;;;;;;10554:1338:64:o;1431:145:76:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:76:o;8092:487:64:-;8176:25;8204:22;;;:9;:22;;;;;8236:18;;:::i;:::-;-1:-1:-1;;;;;;8257:23:64;;;;;;:15;;;:23;;;;;;;;8236:44;;;;;;;;;;;;;;;;;;;;;;;8320:26;;;:14;;;:26;;;;;;8236:44;;8319:50;;8320:26;8319:50;:32;:50;:::i;:::-;8305:10;;8290:26;;;;:14;;;:26;;;;;;;;:79;;;;8427:16;;;8402:19;;;;8401:43;;;:25;:43;:::i;:::-;8379:19;;;:65;-1:-1:-1;;;;;8461:23:64;;;;;;;:15;;;:23;;;;;;;;8454:30;;;;;;;;8539:23;;8525:38;;:13;:38;;;;;;;8499:73;;8461:23;;8525:38;;8512:11;;8499:73;;;8092:487;;;;:::o;9128:909::-;9205:4;1660:22;;;:9;:22;;;;;;;:27;;9184:11;;1660:27;;1652:36;;;;;;9221:25;9249:22;;;:9;:22;;;;;;;;9347:18;;;;9315:89;;-1:-1:-1;;;9315:89:64;;;;;;;;;;9249:22;;9221:25;9347:18;;;;-1:-1:-1;;;;;9347:18:64;;9315:76;;:89;;;;;;;;;;;9347:18;9315:89;;;5:2:-1;;;;30:1;27;20:12;5:2;9315:89:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9315:89:64;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9315:89:64;9443:19;;;;9414:15;9432:31;;;9315:89;9432:31;;;;;;:39;9315:89;;-1:-1:-1;9526:483:64;9555:8;:21;;;9548:3;:28;9526:483;;9603:19;;;;:14;;;:19;;;;;;9642:3;9626:19;;9625:29;;-1:-1:-1;9599:400:64;;;9674:27;;:::i;:::-;-1:-1:-1;9674:38:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9674:38:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9730:27;9745:11;9730:14;:27::i;:::-;9823:26;;9809:41;;;;:13;:41;;;;;;;;;;9780:93;;;;;;;;;;;;;-1:-1:-1;;;;;9809:41:64;;;;9796:11;;9780:93;;;;;;;;;;;9923:11;:21;;;-1:-1:-1;;;;;9898:63:64;;9962:11;9979:3;9898:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9898:86:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9898:86:64;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9898:86:64;;-1:-1:-1;9891:93:64;;-1:-1:-1;;;;;9891:93:64;9599:400;9578:5;;9526:483;;;-1:-1:-1;10025:5:64;;9128:909;-1:-1:-1;;;;;;9128:909:64:o;1205:145:76:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:76;;;1205:145::o;8585:279:64:-;8649:25;8677:22;;;:9;:22;;;;;;8709:110;8738:8;:21;;;8731:3;:28;8709:110;;8789:19;;;;:14;;;:19;;;;;8782:26;8761:5;;8709:110;;;-1:-1:-1;;8835:22:64;;;;:9;:22;;;;;;;8828:29;;;;;;;;-1:-1:-1;;;;;;8828:29:64;;;;;;;;;;;;;;;;;;8585:279::o;237:11657::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;237:11657:64;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;237:11657:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.4;\n\nimport \"../Reputation.sol\";\nimport \"./IntVoteInterface.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"./VotingMachineCallbacksInterface.sol\";\nimport \"./ProposalExecuteInterface.sol\";\n\n\ncontract AbsoluteVote is IntVoteInterface {\n    using SafeMath for uint;\n\n    struct Parameters {\n        uint256 precReq; // how many percentages required for the proposal to be passed\n        address voteOnBehalf; //if this address is set so only this address is allowed\n                              // to vote of behalf of someone else.\n    }\n\n    struct Voter {\n        uint256 vote; // 0 - 'abstain'\n        uint256 reputation; // amount of voter's reputation\n    }\n\n    struct Proposal {\n        bytes32 organizationId; // the organization Id\n        bool open; // voting open flag\n        address callbacks;\n        uint256 numOfChoices;\n        bytes32 paramsHash; // the hash of the parameters of the proposal\n        uint256 totalVotes;\n        mapping(uint=>uint) votes;\n        mapping(address=>Voter) voters;\n    }\n\n    event AVVoteProposal(bytes32 indexed _proposalId, bool _isProxyVote);\n\n    mapping(bytes32=>Parameters) public parameters;  // A mapping from hashes to parameters\n    mapping(bytes32=>Proposal) public proposals; // Mapping from the ID of the proposal to the proposal itself.\n    mapping(bytes32=>address) public organizations;\n\n    uint256 public constant MAX_NUM_OF_CHOICES = 10;\n    uint256 public proposalsCnt; // Total amount of proposals\n\n  /**\n   * @dev Check that the proposal is votable (open and not executed yet)\n   */\n    modifier votable(bytes32 _proposalId) {\n        require(proposals[_proposalId].open);\n        _;\n    }\n\n    /**\n     * @dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\n     * generated by calculating keccak256 of a incremented counter.\n     * @param _numOfChoices number of voting choices\n     * @param _paramsHash defined the parameters of the voting machine used for this proposal\n     * @param _organization address\n     * @return proposal's id.\n     */\n    function propose(uint256 _numOfChoices, bytes32 _paramsHash, address, address _organization)\n        external\n        returns(bytes32)\n    {\n        // Check valid params and number of choices:\n        require(parameters[_paramsHash].precReq > 0);\n        require(_numOfChoices > 0 && _numOfChoices <= MAX_NUM_OF_CHOICES);\n        // Generate a unique ID:\n        bytes32 proposalId = keccak256(abi.encodePacked(this, proposalsCnt));\n        proposalsCnt = proposalsCnt.add(1);\n        // Open proposal:\n        Proposal memory proposal;\n        proposal.numOfChoices = _numOfChoices;\n        proposal.paramsHash = _paramsHash;\n        proposal.callbacks = msg.sender;\n        proposal.organizationId = keccak256(abi.encodePacked(msg.sender, _organization));\n        proposal.open = true;\n        proposals[proposalId] = proposal;\n        if (organizations[proposal.organizationId] == address(0)) {\n            if (_organization == address(0)) {\n                organizations[proposal.organizationId] = msg.sender;\n            } else {\n                organizations[proposal.organizationId] = _organization;\n            }\n        }\n        emit NewProposal(proposalId, organizations[proposal.organizationId], _numOfChoices, msg.sender, _paramsHash);\n        return proposalId;\n    }\n\n    /**\n     * @dev voting function\n     * @param _proposalId id of the proposal\n     * @param _vote a value between 0 to and the proposal number of choices.\n     * @param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\n     * @param _voter voter address\n     * @return bool true - the proposal has been executed\n     *              false - otherwise.\n     */\n    function vote(\n        bytes32 _proposalId,\n        uint256 _vote,\n        uint256 _amount,\n        address _voter)\n        external\n        votable(_proposalId)\n        returns(bool)\n        {\n\n        Proposal storage proposal = proposals[_proposalId];\n        Parameters memory params = parameters[proposal.paramsHash];\n        address voter;\n        if (params.voteOnBehalf != address(0)) {\n            require(msg.sender == params.voteOnBehalf);\n            voter = _voter;\n        } else {\n            voter = msg.sender;\n        }\n        return internalVote(_proposalId, voter, _vote, _amount);\n    }\n\n  /**\n   * @dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes\n   * and delete the voter from the proposal struct\n   * @param _proposalId id of the proposal\n   */\n    function cancelVote(bytes32 _proposalId) external votable(_proposalId) {\n        cancelVoteInternal(_proposalId, msg.sender);\n    }\n\n    /**\n      * @dev execute check if the proposal has been decided, and if so, execute the proposal\n      * @param _proposalId the id of the proposal\n      * @return bool true - the proposal has been executed\n      *              false - otherwise.\n     */\n    function execute(bytes32 _proposalId) external votable(_proposalId) returns(bool) {\n        return _execute(_proposalId);\n    }\n\n  /**\n   * @dev getNumberOfChoices returns the number of choices possible in this proposal\n   * excluding the abstain vote (0)\n   * @param _proposalId the ID of the proposal\n   * @return uint256 that contains number of choices\n   */\n    function getNumberOfChoices(bytes32 _proposalId) external view returns(uint256) {\n        return proposals[_proposalId].numOfChoices;\n    }\n\n  /**\n   * @dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal\n   * @param _proposalId the ID of the proposal\n   * @param _voter the address of the voter\n   * @return uint256 vote - the voters vote\n   *        uint256 reputation - amount of reputation committed by _voter to _proposalId\n   */\n    function voteInfo(bytes32 _proposalId, address _voter) external view returns(uint, uint) {\n        Voter memory voter = proposals[_proposalId].voters[_voter];\n        return (voter.vote, voter.reputation);\n    }\n\n    /**\n     * @dev voteStatus returns the reputation voted for a proposal for a specific voting choice.\n     * @param _proposalId the ID of the proposal\n     * @param _choice the index in the\n     * @return voted reputation for the given choice\n     */\n    function voteStatus(bytes32 _proposalId, uint256 _choice) external view returns(uint256) {\n        return proposals[_proposalId].votes[_choice];\n    }\n\n    /**\n      * @dev isVotable check if the proposal is votable\n      * @param _proposalId the ID of the proposal\n      * @return bool true or false\n    */\n    function isVotable(bytes32 _proposalId) external view returns(bool) {\n        return  proposals[_proposalId].open;\n    }\n\n    /**\n     * @dev isAbstainAllow returns if the voting machine allow abstain (0)\n     * @return bool true or false\n     */\n    function isAbstainAllow() external pure returns(bool) {\n        return true;\n    }\n\n    /**\n     * @dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\n     * @return min - minimum number of choices\n               max - maximum number of choices\n     */\n    function getAllowedRangeOfChoices() external pure returns(uint256 min, uint256 max) {\n        return (0, MAX_NUM_OF_CHOICES);\n    }\n\n    /**\n     * @dev hash the parameters, save them if necessary, and return the hash value\n    */\n    function setParameters(uint256 _precReq, address _voteOnBehalf) public returns(bytes32) {\n        require(_precReq <= 100 && _precReq > 0);\n        bytes32 hashedParameters = getParametersHash(_precReq, _voteOnBehalf);\n        parameters[hashedParameters] = Parameters({\n            precReq: _precReq,\n            voteOnBehalf: _voteOnBehalf\n        });\n        return hashedParameters;\n    }\n\n    /**\n     * @dev hashParameters returns a hash of the given parameters\n     */\n    function getParametersHash(uint256 _precReq, address _voteOnBehalf) public pure returns(bytes32) {\n        return keccak256(abi.encodePacked(_precReq, _voteOnBehalf));\n    }\n\n    function cancelVoteInternal(bytes32 _proposalId, address _voter) internal {\n        Proposal storage proposal = proposals[_proposalId];\n        Voter memory voter = proposal.voters[_voter];\n        proposal.votes[voter.vote] = (proposal.votes[voter.vote]).sub(voter.reputation);\n        proposal.totalVotes = (proposal.totalVotes).sub(voter.reputation);\n        delete proposal.voters[_voter];\n        emit CancelVoting(_proposalId, organizations[proposal.organizationId], _voter);\n    }\n\n    function deleteProposal(bytes32 _proposalId) internal {\n        Proposal storage proposal = proposals[_proposalId];\n        for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) {\n            delete proposal.votes[cnt];\n        }\n        delete proposals[_proposalId];\n    }\n\n    /**\n      * @dev execute check if the proposal has been decided, and if so, execute the proposal\n      * @param _proposalId the id of the proposal\n      * @return bool true - the proposal has been executed\n      *              false - otherwise.\n     */\n    function _execute(bytes32 _proposalId) internal votable(_proposalId) returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        uint256 totalReputation =\n        VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply(_proposalId);\n        uint256 precReq = parameters[proposal.paramsHash].precReq;\n        // Check if someone crossed the bar:\n        for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) {\n            if (proposal.votes[cnt] > (totalReputation/100)*precReq) {\n                Proposal memory tmpProposal = proposal;\n                deleteProposal(_proposalId);\n                emit ExecuteProposal(_proposalId, organizations[tmpProposal.organizationId], cnt, totalReputation);\n                return ProposalExecuteInterface(tmpProposal.callbacks).executeProposal(_proposalId, int(cnt));\n            }\n        }\n        return false;\n    }\n\n    /**\n     * @dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n     * @param _proposalId id of the proposal\n     * @param _voter used in case the vote is cast for someone else\n     * @param _vote a value between 0 to and the proposal's number of choices.\n     * @return true in case of proposal execution otherwise false\n     * throws if proposal is not open or if it has been executed\n     * NB: executes the proposal if a decision has been reached\n     */\n    function internalVote(bytes32 _proposalId, address _voter, uint256 _vote, uint256 _rep) internal returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        // Check valid vote:\n        require(_vote <= proposal.numOfChoices);\n        // Check voter has enough reputation:\n        uint256 reputation = VotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId);\n        require(reputation > 0, \"_voter must have reputation\");\n        require(reputation >= _rep);\n        uint256 rep = _rep;\n        if (rep == 0) {\n            rep = reputation;\n        }\n        // If this voter has already voted, first cancel the vote:\n        if (proposal.voters[_voter].reputation != 0) {\n            cancelVoteInternal(_proposalId, _voter);\n        }\n        // The voting itself:\n        proposal.votes[_vote] = rep.add(proposal.votes[_vote]);\n        proposal.totalVotes = rep.add(proposal.totalVotes);\n        proposal.voters[_voter] = Voter({\n            reputation: rep,\n            vote: _vote\n        });\n        // Event:\n        emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep);\n        emit AVVoteProposal(_proposalId, (_voter != msg.sender));\n        // execute the proposal if this vote was decisive:\n        return _execute(_proposalId);\n    }\n}\n",
  "sourcePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
  "ast": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
    "exportedSymbols": {
      "AbsoluteVote": [
        17374
      ]
    },
    "id": 17375,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16579,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:64"
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "../Reputation.sol",
        "id": 16580,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 16424,
        "src": "25:27:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 16581,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 20572,
        "src": "53:32:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 16582,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 21309,
        "src": "86:59:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 16583,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 20648,
        "src": "146:47:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 16584,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 20584,
        "src": "194:40:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 16585,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 20571,
              "src": "262:16:64",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$20571",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 16586,
            "nodeType": "InheritanceSpecifier",
            "src": "262:16:64"
          }
        ],
        "contractDependencies": [
          20571
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 17374,
        "linearizedBaseContracts": [
          17374,
          20571
        ],
        "name": "AbsoluteVote",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 16589,
            "libraryName": {
              "contractScope": null,
              "id": 16587,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21308,
              "src": "291:8:64",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$21308",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "285:24:64",
            "typeName": {
              "id": 16588,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "304:4:64",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "AbsoluteVote.Parameters",
            "id": 16594,
            "members": [
              {
                "constant": false,
                "id": 16591,
                "name": "precReq",
                "nodeType": "VariableDeclaration",
                "scope": 16594,
                "src": "343:15:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16590,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "343:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16593,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 16594,
                "src": "431:20:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 16592,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "431:7:64",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 17374,
            "src": "315:268:64",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Voter",
            "id": 16599,
            "members": [
              {
                "constant": false,
                "id": 16596,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 16599,
                "src": "612:12:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16595,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "612:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16598,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 16599,
                "src": "651:18:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16597,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "651:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 17374,
            "src": "589:119:64",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Proposal",
            "id": 16620,
            "members": [
              {
                "constant": false,
                "id": 16601,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "740:22:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 16600,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16603,
                "name": "open",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "795:9:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 16602,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "795:4:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16605,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "834:17:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 16604,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "834:7:64",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16607,
                "name": "numOfChoices",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "861:20:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16606,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "861:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16609,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "891:18:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 16608,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "891:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16611,
                "name": "totalVotes",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "965:18:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16610,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "965:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16615,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "993:25:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 16614,
                  "keyType": {
                    "id": 16612,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1001:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "993:19:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 16613,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16619,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "1028:30:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                  "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                },
                "typeName": {
                  "id": 16618,
                  "keyType": {
                    "id": 16616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1028:23:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                    "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 16617,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16599,
                    "src": "1045:5:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage_ptr",
                      "typeString": "struct AbsoluteVote.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 17374,
            "src": "714:351:64",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 16626,
            "name": "AVVoteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 16625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16622,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16626,
                  "src": "1092:27:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16621,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1092:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16624,
                  "indexed": false,
                  "name": "_isProxyVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 16626,
                  "src": "1121:17:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16623,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1091:48:64"
            },
            "src": "1071:69:64"
          },
          {
            "constant": false,
            "id": 16630,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1146:46:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
            },
            "typeName": {
              "id": 16629,
              "keyType": {
                "id": 16627,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1154:7:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1146:28:64",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 16628,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 16594,
                "src": "1163:10:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$16594_storage_ptr",
                  "typeString": "struct AbsoluteVote.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 16634,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1238:43:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
            },
            "typeName": {
              "id": 16633,
              "keyType": {
                "id": 16631,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1246:7:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1238:26:64",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 16632,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 16620,
                "src": "1255:8:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                  "typeString": "struct AbsoluteVote.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 16638,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1350:46:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 16637,
              "keyType": {
                "id": 16635,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1358:7:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1350:25:64",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 16636,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1367:7:64",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 16641,
            "name": "MAX_NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1403:47:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 16639,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1403:7:64",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3130",
              "id": 16640,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1448:2:64",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_10_by_1",
                "typeString": "int_const 10"
              },
              "value": "10"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 16643,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1456:27:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 16642,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1456:7:64",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16655,
              "nodeType": "Block",
              "src": "1642:64:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 16648,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16634,
                            "src": "1660:9:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                            }
                          },
                          "id": 16650,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 16649,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16645,
                            "src": "1670:11:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1660:22:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                            "typeString": "struct AbsoluteVote.Proposal storage ref"
                          }
                        },
                        "id": 16651,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "open",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16603,
                        "src": "1660:27:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16647,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "1652:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1652:36:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16653,
                  "nodeType": "ExpressionStatement",
                  "src": "1652:36:64"
                },
                {
                  "id": 16654,
                  "nodeType": "PlaceholderStatement",
                  "src": "1698:1:64"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable (open and not executed yet)",
            "id": 16656,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 16646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16645,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16656,
                  "src": "1621:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16644,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1620:21:64"
            },
            "src": "1604:102:64",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 16799,
              "nodeType": "Block",
              "src": "2257:1143:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 16675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16670,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16630,
                              "src": "2328:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                              }
                            },
                            "id": 16672,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16671,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16660,
                              "src": "2339:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2328:23:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                              "typeString": "struct AbsoluteVote.Parameters storage ref"
                            }
                          },
                          "id": 16673,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "precReq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16591,
                          "src": "2328:31:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2362:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2328:35:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16669,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "2320:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2320:44:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16677,
                  "nodeType": "ExpressionStatement",
                  "src": "2320:44:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 16685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16679,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16658,
                            "src": "2382:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2398:1:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2382:17:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16682,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16658,
                            "src": "2403:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16683,
                            "name": "MAX_NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16641,
                            "src": "2420:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2403:35:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2382:56:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "2374:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:65:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16687,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:65:64"
                },
                {
                  "assignments": [
                    16689
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16689,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 16799,
                      "src": "2482:18:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 16688,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2482:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16697,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 16693,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22239,
                            "src": "2530:4:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$17374",
                              "typeString": "contract AbsoluteVote"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 16694,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16643,
                            "src": "2536:12:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$17374",
                              "typeString": "contract AbsoluteVote"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 16691,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "2513:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2513:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 16695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2513:36:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16690,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "2503:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 16696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2503:47:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2482:68:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 16698,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16643,
                      "src": "2560:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 16701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2592:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 16699,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16643,
                          "src": "2575:12:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "2575:16:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 16702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2575:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2560:34:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 16704,
                  "nodeType": "ExpressionStatement",
                  "src": "2560:34:64"
                },
                {
                  "assignments": [
                    16706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16706,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 16799,
                      "src": "2630:24:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16705,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "2630:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16707,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2630:24:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16708,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2664:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16710,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16607,
                      "src": "2664:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 16711,
                      "name": "_numOfChoices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16658,
                      "src": "2688:13:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2664:37:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 16713,
                  "nodeType": "ExpressionStatement",
                  "src": "2664:37:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16714,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2711:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16716,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16609,
                      "src": "2711:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 16717,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16660,
                      "src": "2733:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2711:33:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 16719,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:33:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16720,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2754:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16722,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16605,
                      "src": "2754:18:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16723,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22171,
                        "src": "2775:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 16724,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2775:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2754:31:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 16726,
                  "nodeType": "ExpressionStatement",
                  "src": "2754:31:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16727,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2795:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16729,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16601,
                      "src": "2795:23:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16733,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22171,
                                "src": "2848:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2848:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16735,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16664,
                              "src": "2860:13:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 16731,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22158,
                              "src": "2831:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 16732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2831:16:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 16736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2831:43:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 16730,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22165,
                        "src": "2821:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 16737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2821:54:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2795:80:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 16739,
                  "nodeType": "ExpressionStatement",
                  "src": "2795:80:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16740,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2885:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16742,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "open",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16603,
                      "src": "2885:13:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 16743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2901:4:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2885:20:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 16745,
                  "nodeType": "ExpressionStatement",
                  "src": "2885:20:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16746,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "2915:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 16748,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 16747,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16689,
                        "src": "2925:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2915:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 16749,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16706,
                      "src": "2939:8:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal memory"
                      }
                    },
                    "src": "2915:32:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "id": 16751,
                  "nodeType": "ExpressionStatement",
                  "src": "2915:32:64"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 16759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16752,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16638,
                        "src": "2961:13:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 16755,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16753,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16706,
                          "src": "2975:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                            "typeString": "struct AbsoluteVote.Proposal memory"
                          }
                        },
                        "id": 16754,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16601,
                        "src": "2975:23:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2961:38:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3011:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 16756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3003:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 16758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3003:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2961:52:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 16784,
                  "nodeType": "IfStatement",
                  "src": "2957:292:64",
                  "trueBody": {
                    "id": 16783,
                    "nodeType": "Block",
                    "src": "3015:234:64",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 16764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16760,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16664,
                            "src": "3033:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3058:1:64",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 16761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3050:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 16763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3050:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3033:27:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16781,
                          "nodeType": "Block",
                          "src": "3152:87:64",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16774,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16638,
                                    "src": "3170:13:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 16777,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16775,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16706,
                                      "src": "3184:8:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 16776,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16601,
                                    "src": "3184:23:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3170:38:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 16778,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16664,
                                  "src": "3211:13:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3170:54:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 16780,
                              "nodeType": "ExpressionStatement",
                              "src": "3170:54:64"
                            }
                          ]
                        },
                        "id": 16782,
                        "nodeType": "IfStatement",
                        "src": "3029:210:64",
                        "trueBody": {
                          "id": 16773,
                          "nodeType": "Block",
                          "src": "3062:84:64",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16765,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16638,
                                    "src": "3080:13:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 16768,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16766,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16706,
                                      "src": "3094:8:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 16767,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16601,
                                    "src": "3094:23:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3080:38:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16769,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22171,
                                    "src": "3121:3:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 16770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3121:10:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3080:51:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 16772,
                              "nodeType": "ExpressionStatement",
                              "src": "3080:51:64"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16786,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16689,
                        "src": "3275:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 16787,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16638,
                          "src": "3287:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 16790,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16788,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16706,
                            "src": "3301:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                              "typeString": "struct AbsoluteVote.Proposal memory"
                            }
                          },
                          "id": 16789,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16601,
                          "src": "3301:23:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3287:38:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16791,
                        "name": "_numOfChoices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16658,
                        "src": "3327:13:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16792,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "3342:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 16793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3342:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16794,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16660,
                        "src": "3354:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 16785,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20468,
                      "src": "3263:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,address,bytes32)"
                      }
                    },
                    "id": 16795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3263:103:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16796,
                  "nodeType": "EmitStatement",
                  "src": "3258:108:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16797,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16689,
                    "src": "3383:10:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 16668,
                  "id": 16798,
                  "nodeType": "Return",
                  "src": "3376:17:64"
                }
              ]
            },
            "documentation": "@dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\ngenerated by calculating keccak256 of a incremented counter.\n@param _numOfChoices number of voting choices\n@param _paramsHash defined the parameters of the voting machine used for this proposal\n@param _organization address\n@return proposal's id.",
            "id": 16800,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16665,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16658,
                  "name": "_numOfChoices",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2135:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2135:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16660,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2158:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16659,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2158:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16662,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2179:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16661,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16664,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2188:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16663,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2134:76:64"
            },
            "returnParameters": {
              "id": 16668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16667,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2244:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16666,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2244:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2243:9:64"
            },
            "scope": 17374,
            "src": "2118:1282:64",
            "stateMutability": "nonpayable",
            "superFunction": 20517,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16865,
              "nodeType": "Block",
              "src": "4005:416:64",
              "statements": [
                {
                  "assignments": [
                    16817
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16817,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 16865,
                      "src": "4016:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16816,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "4016:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16821,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 16818,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "4044:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 16820,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 16819,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16802,
                      "src": "4054:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4044:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4016:50:64"
                },
                {
                  "assignments": [
                    16823
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16823,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 16865,
                      "src": "4076:24:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_memory_ptr",
                        "typeString": "struct AbsoluteVote.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16822,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16594,
                        "src": "4076:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$16594_storage_ptr",
                          "typeString": "struct AbsoluteVote.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16828,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 16824,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16630,
                      "src": "4103:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                      }
                    },
                    "id": 16827,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16825,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16817,
                        "src": "4114:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 16826,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16609,
                      "src": "4114:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4103:31:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4076:58:64"
                },
                {
                  "assignments": [
                    16830
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16830,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 16865,
                      "src": "4144:13:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 16829,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4144:7:64",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16831,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4144:13:64"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 16837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16832,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16823,
                        "src": "4171:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$16594_memory_ptr",
                          "typeString": "struct AbsoluteVote.Parameters memory"
                        }
                      },
                      "id": 16833,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voteOnBehalf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16593,
                      "src": "4171:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4202:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 16834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4194:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 16836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4194:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4171:33:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 16856,
                    "nodeType": "Block",
                    "src": "4307:43:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16851,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16830,
                            "src": "4321:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16852,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22171,
                              "src": "4329:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 16853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4329:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4321:18:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16855,
                        "nodeType": "ExpressionStatement",
                        "src": "4321:18:64"
                      }
                    ]
                  },
                  "id": 16857,
                  "nodeType": "IfStatement",
                  "src": "4167:183:64",
                  "trueBody": {
                    "id": 16850,
                    "nodeType": "Block",
                    "src": "4206:95:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16839,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22171,
                                  "src": "4228:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 16840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4228:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16841,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16823,
                                  "src": "4242:6:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$16594_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Parameters memory"
                                  }
                                },
                                "id": 16842,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "voteOnBehalf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16593,
                                "src": "4242:19:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4228:33:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 16838,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22174,
                            "src": "4220:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 16844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4220:42:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16845,
                        "nodeType": "ExpressionStatement",
                        "src": "4220:42:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16846,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16830,
                            "src": "4276:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 16847,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16808,
                            "src": "4284:6:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4276:14:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16849,
                        "nodeType": "ExpressionStatement",
                        "src": "4276:14:64"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16859,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16802,
                        "src": "4379:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16860,
                        "name": "voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16830,
                        "src": "4392:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16861,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16804,
                        "src": "4399:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16862,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16806,
                        "src": "4406:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 16858,
                      "name": "internalVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17373,
                      "src": "4366:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (bytes32,address,uint256,uint256) returns (bool)"
                      }
                    },
                    "id": 16863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4366:48:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16815,
                  "id": 16864,
                  "nodeType": "Return",
                  "src": "4359:55:64"
                }
              ]
            },
            "documentation": "@dev voting function\n@param _proposalId id of the proposal\n@param _vote a value between 0 to and the proposal number of choices.\n@param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\n@param _voter voter address\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 16866,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 16811,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16802,
                    "src": "3962:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 16812,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16810,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "3954:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3954:20:64"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16802,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3836:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16801,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3836:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16804,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3865:13:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16803,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3865:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16806,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3888:15:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3888:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16808,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3913:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16807,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3913:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3826:102:64"
            },
            "returnParameters": {
              "id": 16815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16814,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3991:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16813,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3991:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3990:6:64"
            },
            "scope": 17374,
            "src": "3813:608:64",
            "stateMutability": "nonpayable",
            "superFunction": 20530,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16880,
              "nodeType": "Block",
              "src": "4695:60:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16875,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16868,
                        "src": "4724:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16876,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "4737:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 16877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4737:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 16874,
                      "name": "cancelVoteInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17108,
                      "src": "4705:18:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 16878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4705:43:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16879,
                  "nodeType": "ExpressionStatement",
                  "src": "4705:43:64"
                }
              ]
            },
            "documentation": "@dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes\nand delete the voter from the proposal struct\n@param _proposalId id of the proposal",
            "id": 16881,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 16871,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16868,
                    "src": "4682:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 16872,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16870,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "4674:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4674:20:64"
              }
            ],
            "name": "cancelVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16868,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16881,
                  "src": "4644:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16867,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:21:64"
            },
            "returnParameters": {
              "id": 16873,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4695:0:64"
            },
            "scope": 17374,
            "src": "4624:131:64",
            "stateMutability": "nonpayable",
            "superFunction": 20535,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16895,
              "nodeType": "Block",
              "src": "5101:45:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16892,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16883,
                        "src": "5127:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 16891,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17236,
                      "src": "5118:8:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 16893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5118:21:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16890,
                  "id": 16894,
                  "nodeType": "Return",
                  "src": "5111:28:64"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 16896,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 16886,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16883,
                    "src": "5074:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 16887,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16885,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "5066:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5066:20:64"
              }
            ],
            "name": "execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16884,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16883,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16896,
                  "src": "5036:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16882,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5036:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5035:21:64"
            },
            "returnParameters": {
              "id": 16890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16889,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16896,
                  "src": "5095:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16888,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5095:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5094:6:64"
            },
            "scope": 17374,
            "src": "5019:127:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16908,
              "nodeType": "Block",
              "src": "5465:59:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16903,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "5482:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 16905,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 16904,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16898,
                        "src": "5492:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5482:22:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 16906,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "numOfChoices",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16607,
                    "src": "5482:35:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 16902,
                  "id": 16907,
                  "nodeType": "Return",
                  "src": "5475:42:64"
                }
              ]
            },
            "documentation": "@dev getNumberOfChoices returns the number of choices possible in this proposal\nexcluding the abstain vote (0)\n@param _proposalId the ID of the proposal\n@return uint256 that contains number of choices",
            "id": 16909,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16898,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16909,
                  "src": "5413:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16897,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5413:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5412:21:64"
            },
            "returnParameters": {
              "id": 16902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16901,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16909,
                  "src": "5456:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16900,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5456:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5455:9:64"
            },
            "scope": 17374,
            "src": "5385:139:64",
            "stateMutability": "view",
            "superFunction": 20542,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16935,
              "nodeType": "Block",
              "src": "5959:122:64",
              "statements": [
                {
                  "assignments": [
                    16921
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16921,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 16935,
                      "src": "5969:18:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16920,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16599,
                        "src": "5969:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$16599_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16928,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 16922,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16634,
                          "src": "5990:9:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 16924,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 16923,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16911,
                          "src": "6000:11:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5990:22:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 16925,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16619,
                      "src": "5990:29:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 16927,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 16926,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16913,
                      "src": "6020:6:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5990:37:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5969:58:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16929,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16921,
                          "src": "6045:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 16930,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16596,
                        "src": "6045:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16931,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16921,
                          "src": "6057:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 16932,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reputation",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16598,
                        "src": "6057:16:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 16933,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6044:30:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 16919,
                  "id": 16934,
                  "nodeType": "Return",
                  "src": "6037:37:64"
                }
              ]
            },
            "documentation": "@dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal\n@param _proposalId the ID of the proposal\n@param _voter the address of the voter\n@return uint256 vote - the voters vote\n       uint256 reputation - amount of reputation committed by _voter to _proposalId",
            "id": 16936,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16911,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5888:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16910,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5888:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16913,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5909:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16912,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5909:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5887:37:64"
            },
            "returnParameters": {
              "id": 16919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16916,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5947:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16915,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5947:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16918,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5953:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16917,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5953:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5946:12:64"
            },
            "scope": 17374,
            "src": "5870:211:64",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16952,
              "nodeType": "Block",
              "src": "6430:61:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 16945,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16634,
                          "src": "6447:9:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 16947,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 16946,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16938,
                          "src": "6457:11:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6447:22:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 16948,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16615,
                      "src": "6447:28:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 16950,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 16949,
                      "name": "_choice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16940,
                      "src": "6476:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6447:37:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 16944,
                  "id": 16951,
                  "nodeType": "Return",
                  "src": "6440:44:64"
                }
              ]
            },
            "documentation": "@dev voteStatus returns the reputation voted for a proposal for a specific voting choice.\n@param _proposalId the ID of the proposal\n@param _choice the index in the\n@return voted reputation for the given choice",
            "id": 16953,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16938,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16953,
                  "src": "6361:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16937,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6361:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16940,
                  "name": "_choice",
                  "nodeType": "VariableDeclaration",
                  "scope": 16953,
                  "src": "6382:15:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16939,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6382:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6360:38:64"
            },
            "returnParameters": {
              "id": 16944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16943,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16953,
                  "src": "6421:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6421:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6420:9:64"
            },
            "scope": 17374,
            "src": "6341:150:64",
            "stateMutability": "view",
            "superFunction": 20558,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16965,
              "nodeType": "Block",
              "src": "6721:52:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16960,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "6739:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 16962,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 16961,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16955,
                        "src": "6749:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6739:22:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 16963,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "open",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16603,
                    "src": "6739:27:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16959,
                  "id": 16964,
                  "nodeType": "Return",
                  "src": "6731:35:64"
                }
              ]
            },
            "documentation": "@dev isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 16966,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16955,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16966,
                  "src": "6672:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16954,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6672:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6671:21:64"
            },
            "returnParameters": {
              "id": 16959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16958,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16966,
                  "src": "6715:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16957,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6715:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6714:6:64"
            },
            "scope": 17374,
            "src": "6653:120:64",
            "stateMutability": "view",
            "superFunction": 20549,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16973,
              "nodeType": "Block",
              "src": "6958:28:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 16971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6975:4:64",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 16970,
                  "id": 16972,
                  "nodeType": "Return",
                  "src": "6968:11:64"
                }
              ]
            },
            "documentation": "@dev isAbstainAllow returns if the voting machine allow abstain (0)\n@return bool true or false",
            "id": 16974,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAbstainAllow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16967,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6927:2:64"
            },
            "returnParameters": {
              "id": 16970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16969,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16974,
                  "src": "6952:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16968,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6952:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6951:6:64"
            },
            "scope": 17374,
            "src": "6904:82:64",
            "stateMutability": "pure",
            "superFunction": 20563,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16985,
              "nodeType": "Block",
              "src": "7282:47:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 16981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7300:1:64",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 16982,
                        "name": "MAX_NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16641,
                        "src": "7303:18:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 16983,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7299:23:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$",
                      "typeString": "tuple(int_const 0,uint256)"
                    }
                  },
                  "functionReturnParameters": 16980,
                  "id": 16984,
                  "nodeType": "Return",
                  "src": "7292:30:64"
                }
              ]
            },
            "documentation": "@dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\n@return min - minimum number of choices\nmax - maximum number of choices",
            "id": 16986,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAllowedRangeOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16975,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7231:2:64"
            },
            "returnParameters": {
              "id": 16980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16977,
                  "name": "min",
                  "nodeType": "VariableDeclaration",
                  "scope": 16986,
                  "src": "7256:11:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7256:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16979,
                  "name": "max",
                  "nodeType": "VariableDeclaration",
                  "scope": 16986,
                  "src": "7269:11:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16978,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7269:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7255:26:64"
            },
            "scope": 17374,
            "src": "7198:131:64",
            "stateMutability": "pure",
            "superFunction": 20570,
            "visibility": "external"
          },
          {
            "body": {
              "id": 17023,
              "nodeType": "Block",
              "src": "7521:304:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16996,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16988,
                            "src": "7539:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 16997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7551:3:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "7539:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16999,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16988,
                            "src": "7558:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7569:1:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7558:12:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7539:31:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16995,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "7531:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 17003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7531:40:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17004,
                  "nodeType": "ExpressionStatement",
                  "src": "7531:40:64"
                },
                {
                  "assignments": [
                    17006
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17006,
                      "name": "hashedParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 17023,
                      "src": "7581:24:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 17005,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7581:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17011,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17008,
                        "name": "_precReq",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16988,
                        "src": "7626:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17009,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16990,
                        "src": "7636:13:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17007,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17042,
                      "src": "7608:17:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256,address) pure returns (bytes32)"
                      }
                    },
                    "id": 17010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7608:42:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7581:69:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17012,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16630,
                        "src": "7660:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 17014,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17013,
                        "name": "hashedParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17006,
                        "src": "7671:16:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7660:28:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 17016,
                          "name": "_precReq",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16988,
                          "src": "7725:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17017,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16990,
                          "src": "7761:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 17015,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16594,
                        "src": "7691:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$16594_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Parameters storage pointer)"
                        }
                      },
                      "id": 17018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "precReq",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "7691:94:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_memory",
                        "typeString": "struct AbsoluteVote.Parameters memory"
                      }
                    },
                    "src": "7660:125:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "id": 17020,
                  "nodeType": "ExpressionStatement",
                  "src": "7660:125:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17021,
                    "name": "hashedParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17006,
                    "src": "7802:16:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 16994,
                  "id": 17022,
                  "nodeType": "Return",
                  "src": "7795:23:64"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value",
            "id": 17024,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16988,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 17024,
                  "src": "7456:16:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7456:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16990,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 17024,
                  "src": "7474:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7474:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7455:41:64"
            },
            "returnParameters": {
              "id": 16994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16993,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17024,
                  "src": "7512:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16992,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7512:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7511:9:64"
            },
            "scope": 17374,
            "src": "7433:392:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17041,
              "nodeType": "Block",
              "src": "8010:76:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 17036,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17026,
                            "src": "8054:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 17037,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17028,
                            "src": "8064:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 17034,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "8037:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8037:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 17038,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8037:41:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17033,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "8027:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 17039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8027:52:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17032,
                  "id": 17040,
                  "nodeType": "Return",
                  "src": "8020:59:64"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 17042,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17029,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17026,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "7940:16:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17025,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7940:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17028,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "7958:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17027,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7958:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7939:41:64"
            },
            "returnParameters": {
              "id": 17032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17031,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "8001:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17030,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8001:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8000:9:64"
            },
            "scope": 17374,
            "src": "7913:173:64",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17107,
              "nodeType": "Block",
              "src": "8166:413:64",
              "statements": [
                {
                  "assignments": [
                    17050
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17050,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17107,
                      "src": "8176:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17049,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "8176:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17054,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17051,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "8204:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17053,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17052,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17044,
                      "src": "8214:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8204:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8176:50:64"
                },
                {
                  "assignments": [
                    17056
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17056,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 17107,
                      "src": "8236:18:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17055,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16599,
                        "src": "8236:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$16599_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17061,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17057,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17050,
                        "src": "8257:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17058,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16619,
                      "src": "8257:15:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 17060,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17059,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17046,
                      "src": "8273:6:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8257:23:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8236:44:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17062,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17050,
                          "src": "8290:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17066,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16615,
                        "src": "8290:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 17067,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17064,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17056,
                          "src": "8305:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 17065,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16596,
                        "src": "8305:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8290:26:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17075,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17056,
                            "src": "8352:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 17076,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16598,
                          "src": "8352:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17068,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17050,
                                  "src": "8320:8:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                  }
                                },
                                "id": 17069,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16615,
                                "src": "8320:14:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 17072,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17070,
                                  "name": "voter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17056,
                                  "src": "8335:5:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Voter memory"
                                  }
                                },
                                "id": 17071,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16596,
                                "src": "8335:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8320:26:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17073,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8319:28:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21263,
                        "src": "8319:32:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8319:50:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8290:79:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17079,
                  "nodeType": "ExpressionStatement",
                  "src": "8290:79:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17080,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17050,
                        "src": "8379:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17082,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16611,
                      "src": "8379:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17087,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17056,
                            "src": "8427:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 17088,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16598,
                          "src": "8427:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17083,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17050,
                                "src": "8402:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 17084,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16611,
                              "src": "8402:19:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17085,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8401:21:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21263,
                        "src": "8401:25:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8401:43:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8379:65:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17091,
                  "nodeType": "ExpressionStatement",
                  "src": "8379:65:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8454:30:64",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17092,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17050,
                          "src": "8461:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17093,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16619,
                        "src": "8461:15:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 17095,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17094,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17046,
                        "src": "8477:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8461:23:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17097,
                  "nodeType": "ExpressionStatement",
                  "src": "8454:30:64"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17099,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17044,
                        "src": "8512:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17100,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16638,
                          "src": "8525:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 17103,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17101,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17050,
                            "src": "8539:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17102,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16601,
                          "src": "8539:23:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8525:38:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17104,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17046,
                        "src": "8565:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17098,
                      "name": "CancelVoting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20504,
                      "src": "8499:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address,address)"
                      }
                    },
                    "id": 17105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8499:73:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17106,
                  "nodeType": "EmitStatement",
                  "src": "8494:78:64"
                }
              ]
            },
            "documentation": null,
            "id": 17108,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancelVoteInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17044,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17108,
                  "src": "8120:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17043,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8120:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17046,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 17108,
                  "src": "8141:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17045,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8141:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8119:37:64"
            },
            "returnParameters": {
              "id": 17048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8166:0:64"
            },
            "scope": 17374,
            "src": "8092:487:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17143,
              "nodeType": "Block",
              "src": "8639:225:64",
              "statements": [
                {
                  "assignments": [
                    17114
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17114,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17143,
                      "src": "8649:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17113,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "8649:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17118,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17115,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "8677:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17117,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17116,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17110,
                      "src": "8687:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8677:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8649:50:64"
                },
                {
                  "body": {
                    "id": 17136,
                    "nodeType": "Block",
                    "src": "8768:51:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8782:26:64",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17130,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17114,
                                "src": "8789:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 17131,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16615,
                              "src": "8789:14:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 17133,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17132,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17120,
                              "src": "8804:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8789:19:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17135,
                        "nodeType": "ExpressionStatement",
                        "src": "8782:26:64"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17123,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17120,
                      "src": "8731:3:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17124,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17114,
                        "src": "8738:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17125,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16607,
                      "src": "8738:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8731:28:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17137,
                  "initializationExpression": {
                    "assignments": [
                      17120
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17120,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 17137,
                        "src": "8714:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8714:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 17122,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8728:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8714:15:64"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 17128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8761:5:64",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 17127,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17120,
                        "src": "8761:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17129,
                    "nodeType": "ExpressionStatement",
                    "src": "8761:5:64"
                  },
                  "nodeType": "ForStatement",
                  "src": "8709:110:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8828:29:64",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17138,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "8835:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 17140,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17139,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17110,
                        "src": "8845:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8835:22:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17142,
                  "nodeType": "ExpressionStatement",
                  "src": "8828:29:64"
                }
              ]
            },
            "documentation": null,
            "id": 17144,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deleteProposal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17110,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17144,
                  "src": "8609:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8609:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8608:21:64"
            },
            "returnParameters": {
              "id": 17112,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8639:0:64"
            },
            "scope": 17374,
            "src": "8585:279:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17235,
              "nodeType": "Block",
              "src": "9211:826:64",
              "statements": [
                {
                  "assignments": [
                    17155
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17155,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17235,
                      "src": "9221:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17154,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "9221:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17159,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17156,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "9249:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17158,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17157,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17146,
                      "src": "9259:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9249:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9221:50:64"
                },
                {
                  "assignments": [
                    17161
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17161,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 17235,
                      "src": "9281:23:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17160,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9281:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17169,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17167,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17146,
                        "src": "9392:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17163,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17155,
                              "src": "9347:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 17164,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16605,
                            "src": "9347:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17162,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "9315:31:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 17165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9315:51:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 17166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20628,
                      "src": "9315:76:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 17168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9315:89:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9281:123:64"
                },
                {
                  "assignments": [
                    17171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17171,
                      "name": "precReq",
                      "nodeType": "VariableDeclaration",
                      "scope": 17235,
                      "src": "9414:15:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9414:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17177,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17172,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16630,
                        "src": "9432:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 17175,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17173,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17155,
                          "src": "9443:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17174,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "paramsHash",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16609,
                        "src": "9443:19:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9432:31:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "id": 17176,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "precReq",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16591,
                    "src": "9432:39:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9414:57:64"
                },
                {
                  "body": {
                    "id": 17231,
                    "nodeType": "Block",
                    "src": "9585:424:64",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17189,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17155,
                                "src": "9603:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 17190,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16615,
                              "src": "9603:14:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 17192,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17191,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17179,
                              "src": "9618:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9603:19:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17193,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17161,
                                    "src": "9626:15:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 17194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9642:3:64",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  },
                                  "src": "9626:19:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 17196,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9625:21:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 17197,
                              "name": "precReq",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17171,
                              "src": "9647:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9625:29:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9603:51:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17230,
                        "nodeType": "IfStatement",
                        "src": "9599:400:64",
                        "trueBody": {
                          "id": 17229,
                          "nodeType": "Block",
                          "src": "9656:343:64",
                          "statements": [
                            {
                              "assignments": [
                                17201
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17201,
                                  "name": "tmpProposal",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17229,
                                  "src": "9674:27:64",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 17200,
                                    "name": "Proposal",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 16620,
                                    "src": "9674:8:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                      "typeString": "struct AbsoluteVote.Proposal"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17203,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 17202,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17155,
                                "src": "9704:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9674:38:64"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17205,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17146,
                                    "src": "9745:11:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 17204,
                                  "name": "deleteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17144,
                                  "src": "9730:14:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32)"
                                  }
                                },
                                "id": 17206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9730:27:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17207,
                              "nodeType": "ExpressionStatement",
                              "src": "9730:27:64"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17209,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17146,
                                    "src": "9796:11:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 17210,
                                      "name": "organizations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16638,
                                      "src": "9809:13:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                      }
                                    },
                                    "id": 17213,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17211,
                                        "name": "tmpProposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17201,
                                        "src": "9823:11:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                          "typeString": "struct AbsoluteVote.Proposal memory"
                                        }
                                      },
                                      "id": 17212,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16601,
                                      "src": "9823:26:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9809:41:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 17214,
                                    "name": "cnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17179,
                                    "src": "9852:3:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 17215,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17161,
                                    "src": "9857:15:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17208,
                                  "name": "ExecuteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20478,
                                  "src": "9780:15:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,address,uint256,uint256)"
                                  }
                                },
                                "id": 17216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9780:93:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17217,
                              "nodeType": "EmitStatement",
                              "src": "9775:98:64"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17223,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17146,
                                    "src": "9962:11:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 17225,
                                        "name": "cnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17179,
                                        "src": "9979:3:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 17224,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9975:3:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": "int"
                                    },
                                    "id": 17226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9975:8:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17219,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17201,
                                          "src": "9923:11:64",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                            "typeString": "struct AbsoluteVote.Proposal memory"
                                          }
                                        },
                                        "id": 17220,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "callbacks",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 16605,
                                        "src": "9923:21:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 17218,
                                      "name": "ProposalExecuteInterface",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20583,
                                      "src": "9898:24:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$20583_$",
                                        "typeString": "type(contract ProposalExecuteInterface)"
                                      }
                                    },
                                    "id": 17221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9898:47:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProposalExecuteInterface_$20583",
                                      "typeString": "contract ProposalExecuteInterface"
                                    }
                                  },
                                  "id": 17222,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "executeProposal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20582,
                                  "src": "9898:63:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                                    "typeString": "function (bytes32,int256) external returns (bool)"
                                  }
                                },
                                "id": 17227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9898:86:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 17153,
                              "id": 17228,
                              "nodeType": "Return",
                              "src": "9891:93:64"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17182,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17179,
                      "src": "9548:3:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17183,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17155,
                        "src": "9555:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17184,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16607,
                      "src": "9555:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9548:28:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17232,
                  "initializationExpression": {
                    "assignments": [
                      17179
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17179,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 17232,
                        "src": "9531:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9531:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 17181,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9545:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9531:15:64"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 17187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9578:5:64",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 17186,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17179,
                        "src": "9578:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17188,
                    "nodeType": "ExpressionStatement",
                    "src": "9578:5:64"
                  },
                  "nodeType": "ForStatement",
                  "src": "9526:483:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 17233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10025:5:64",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 17153,
                  "id": 17234,
                  "nodeType": "Return",
                  "src": "10018:12:64"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 17236,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17149,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17146,
                    "src": "9184:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17150,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17148,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "9176:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9176:20:64"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17146,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17236,
                  "src": "9146:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17145,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9146:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9145:21:64"
            },
            "returnParameters": {
              "id": 17153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17152,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17236,
                  "src": "9205:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17151,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9205:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9204:6:64"
            },
            "scope": 17374,
            "src": "9128:909:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17372,
              "nodeType": "Block",
              "src": "10665:1227:64",
              "statements": [
                {
                  "assignments": [
                    17250
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17250,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17372,
                      "src": "10675:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17249,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "10675:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17254,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17251,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "10703:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17253,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17252,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17238,
                      "src": "10713:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10703:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10675:50:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17256,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17242,
                          "src": "10772:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17257,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "10781:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17258,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfChoices",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16607,
                          "src": "10781:21:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10772:30:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "10764:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 17260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:39:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17261,
                  "nodeType": "ExpressionStatement",
                  "src": "10764:39:64"
                },
                {
                  "assignments": [
                    17263
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17263,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 17372,
                      "src": "10859:18:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10859:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17272,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17269,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17240,
                        "src": "10945:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17270,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "10953:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17265,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17250,
                              "src": "10912:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 17266,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16605,
                            "src": "10912:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17264,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "10880:31:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 17267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10880:51:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 17268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20637,
                      "src": "10880:64:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 17271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10880:85:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10859:106:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17274,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17263,
                          "src": "10983:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 17275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10996:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10983:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 17277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10999:29:64",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        },
                        "value": "_voter must have reputation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        }
                      ],
                      "id": 17273,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10975:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10975:54:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17279,
                  "nodeType": "ExpressionStatement",
                  "src": "10975:54:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17281,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17263,
                          "src": "11047:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 17282,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17244,
                          "src": "11061:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11047:18:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17280,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "11039:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 17284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11039:27:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17285,
                  "nodeType": "ExpressionStatement",
                  "src": "11039:27:64"
                },
                {
                  "assignments": [
                    17287
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17287,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 17372,
                      "src": "11076:11:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17286,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11076:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17289,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 17288,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17244,
                    "src": "11090:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11076:18:64"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17290,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17287,
                      "src": "11108:3:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17291,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11115:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11108:8:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17298,
                  "nodeType": "IfStatement",
                  "src": "11104:55:64",
                  "trueBody": {
                    "id": 17297,
                    "nodeType": "Block",
                    "src": "11118:41:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17293,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17287,
                            "src": "11132:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17294,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17263,
                            "src": "11138:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11132:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17296,
                        "nodeType": "ExpressionStatement",
                        "src": "11132:16:64"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17299,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "11239:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17300,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16619,
                          "src": "11239:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                            "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                          }
                        },
                        "id": 17302,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17301,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17240,
                          "src": "11255:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11239:23:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$16599_storage",
                          "typeString": "struct AbsoluteVote.Voter storage ref"
                        }
                      },
                      "id": 17303,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16598,
                      "src": "11239:34:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11277:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11239:39:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17312,
                  "nodeType": "IfStatement",
                  "src": "11235:109:64",
                  "trueBody": {
                    "id": 17311,
                    "nodeType": "Block",
                    "src": "11280:64:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17307,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17238,
                              "src": "11313:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17308,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17240,
                              "src": "11326:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17306,
                            "name": "cancelVoteInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17108,
                            "src": "11294:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 17309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11294:39:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17310,
                        "nodeType": "ExpressionStatement",
                        "src": "11294:39:64"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17313,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17250,
                          "src": "11383:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17316,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16615,
                        "src": "11383:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 17317,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17315,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17242,
                        "src": "11398:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11383:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17320,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17250,
                              "src": "11415:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 17321,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16615,
                            "src": "11415:14:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 17323,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 17322,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17242,
                            "src": "11430:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11415:21:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 17318,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17287,
                          "src": "11407:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "11407:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11407:30:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11383:54:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17326,
                  "nodeType": "ExpressionStatement",
                  "src": "11383:54:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17327,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17250,
                        "src": "11447:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17329,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16611,
                      "src": "11447:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17332,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "11477:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17333,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalVotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16611,
                          "src": "11477:19:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 17330,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17287,
                          "src": "11469:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "11469:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11469:28:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11447:50:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17336,
                  "nodeType": "ExpressionStatement",
                  "src": "11447:50:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17337,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17250,
                          "src": "11507:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17340,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16619,
                        "src": "11507:15:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 17341,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17339,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17240,
                        "src": "11523:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11507:23:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 17343,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17287,
                          "src": "11565:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17344,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17242,
                          "src": "11588:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 17342,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16599,
                        "src": "11533:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$16599_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Voter storage pointer)"
                        }
                      },
                      "id": 17345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "11533:71:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_memory",
                        "typeString": "struct AbsoluteVote.Voter memory"
                      }
                    },
                    "src": "11507:97:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "id": 17347,
                  "nodeType": "ExpressionStatement",
                  "src": "11507:97:64"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17349,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "11650:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17350,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16638,
                          "src": "11663:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 17353,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17351,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "11677:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17352,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16601,
                          "src": "11677:23:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11663:38:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17354,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17240,
                        "src": "11703:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17355,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17242,
                        "src": "11711:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17356,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17287,
                        "src": "11718:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17348,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20490,
                      "src": "11637:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 17357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11637:85:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17358,
                  "nodeType": "EmitStatement",
                  "src": "11632:90:64"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17360,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "11752:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 17364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 17361,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17240,
                              "src": "11766:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17362,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22171,
                                "src": "11776:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11776:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "11766:20:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17365,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "11765:22:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17359,
                      "name": "AVVoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16626,
                      "src": "11737:14:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$",
                        "typeString": "function (bytes32,bool)"
                      }
                    },
                    "id": 17366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11737:51:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17367,
                  "nodeType": "EmitStatement",
                  "src": "11732:56:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17369,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "11873:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17368,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17236,
                      "src": "11864:8:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 17370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11864:21:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17248,
                  "id": 17371,
                  "nodeType": "Return",
                  "src": "11857:28:64"
                }
              ]
            },
            "documentation": "@dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n@param _proposalId id of the proposal\n@param _voter used in case the vote is cast for someone else\n@param _vote a value between 0 to and the proposal's number of choices.\n@return true in case of proposal execution otherwise false\nthrows if proposal is not open or if it has been executed\nNB: executes the proposal if a decision has been reached",
            "id": 17373,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17238,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10576:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17237,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10576:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17240,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10597:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17239,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10597:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17242,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10613:13:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17241,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10613:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17244,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10628:12:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17243,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10628:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:66:64"
            },
            "returnParameters": {
              "id": 17248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17247,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10659:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17246,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10659:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10658:6:64"
            },
            "scope": 17374,
            "src": "10554:1338:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 17375,
        "src": "237:11657:64"
      }
    ],
    "src": "0:11895:64"
  },
  "legacyAST": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
    "exportedSymbols": {
      "AbsoluteVote": [
        17374
      ]
    },
    "id": 17375,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16579,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:64"
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "../Reputation.sol",
        "id": 16580,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 16424,
        "src": "25:27:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 16581,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 20572,
        "src": "53:32:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 16582,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 21309,
        "src": "86:59:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 16583,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 20648,
        "src": "146:47:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 16584,
        "nodeType": "ImportDirective",
        "scope": 17375,
        "sourceUnit": 20584,
        "src": "194:40:64",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 16585,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 20571,
              "src": "262:16:64",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$20571",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 16586,
            "nodeType": "InheritanceSpecifier",
            "src": "262:16:64"
          }
        ],
        "contractDependencies": [
          20571
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 17374,
        "linearizedBaseContracts": [
          17374,
          20571
        ],
        "name": "AbsoluteVote",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 16589,
            "libraryName": {
              "contractScope": null,
              "id": 16587,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21308,
              "src": "291:8:64",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$21308",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "285:24:64",
            "typeName": {
              "id": 16588,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "304:4:64",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "AbsoluteVote.Parameters",
            "id": 16594,
            "members": [
              {
                "constant": false,
                "id": 16591,
                "name": "precReq",
                "nodeType": "VariableDeclaration",
                "scope": 16594,
                "src": "343:15:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16590,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "343:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16593,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 16594,
                "src": "431:20:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 16592,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "431:7:64",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 17374,
            "src": "315:268:64",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Voter",
            "id": 16599,
            "members": [
              {
                "constant": false,
                "id": 16596,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 16599,
                "src": "612:12:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16595,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "612:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16598,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 16599,
                "src": "651:18:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16597,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "651:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 17374,
            "src": "589:119:64",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Proposal",
            "id": 16620,
            "members": [
              {
                "constant": false,
                "id": 16601,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "740:22:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 16600,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16603,
                "name": "open",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "795:9:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 16602,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "795:4:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16605,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "834:17:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 16604,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "834:7:64",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16607,
                "name": "numOfChoices",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "861:20:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16606,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "861:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16609,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "891:18:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 16608,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "891:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16611,
                "name": "totalVotes",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "965:18:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 16610,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "965:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16615,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "993:25:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 16614,
                  "keyType": {
                    "id": 16612,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1001:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "993:19:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 16613,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16619,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 16620,
                "src": "1028:30:64",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                  "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                },
                "typeName": {
                  "id": 16618,
                  "keyType": {
                    "id": 16616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1028:23:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                    "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 16617,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16599,
                    "src": "1045:5:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage_ptr",
                      "typeString": "struct AbsoluteVote.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 17374,
            "src": "714:351:64",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 16626,
            "name": "AVVoteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 16625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16622,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16626,
                  "src": "1092:27:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16621,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1092:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16624,
                  "indexed": false,
                  "name": "_isProxyVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 16626,
                  "src": "1121:17:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16623,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1091:48:64"
            },
            "src": "1071:69:64"
          },
          {
            "constant": false,
            "id": 16630,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1146:46:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
            },
            "typeName": {
              "id": 16629,
              "keyType": {
                "id": 16627,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1154:7:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1146:28:64",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 16628,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 16594,
                "src": "1163:10:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$16594_storage_ptr",
                  "typeString": "struct AbsoluteVote.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 16634,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1238:43:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
            },
            "typeName": {
              "id": 16633,
              "keyType": {
                "id": 16631,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1246:7:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1238:26:64",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 16632,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 16620,
                "src": "1255:8:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                  "typeString": "struct AbsoluteVote.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 16638,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1350:46:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 16637,
              "keyType": {
                "id": 16635,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1358:7:64",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1350:25:64",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 16636,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1367:7:64",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 16641,
            "name": "MAX_NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1403:47:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 16639,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1403:7:64",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3130",
              "id": 16640,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1448:2:64",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_10_by_1",
                "typeString": "int_const 10"
              },
              "value": "10"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 16643,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 17374,
            "src": "1456:27:64",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 16642,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1456:7:64",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16655,
              "nodeType": "Block",
              "src": "1642:64:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 16648,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16634,
                            "src": "1660:9:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                            }
                          },
                          "id": 16650,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 16649,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16645,
                            "src": "1670:11:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1660:22:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                            "typeString": "struct AbsoluteVote.Proposal storage ref"
                          }
                        },
                        "id": 16651,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "open",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16603,
                        "src": "1660:27:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16647,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "1652:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1652:36:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16653,
                  "nodeType": "ExpressionStatement",
                  "src": "1652:36:64"
                },
                {
                  "id": 16654,
                  "nodeType": "PlaceholderStatement",
                  "src": "1698:1:64"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable (open and not executed yet)",
            "id": 16656,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 16646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16645,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16656,
                  "src": "1621:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16644,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1620:21:64"
            },
            "src": "1604:102:64",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 16799,
              "nodeType": "Block",
              "src": "2257:1143:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 16675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16670,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16630,
                              "src": "2328:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                              }
                            },
                            "id": 16672,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16671,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16660,
                              "src": "2339:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2328:23:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                              "typeString": "struct AbsoluteVote.Parameters storage ref"
                            }
                          },
                          "id": 16673,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "precReq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16591,
                          "src": "2328:31:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2362:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2328:35:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16669,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "2320:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2320:44:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16677,
                  "nodeType": "ExpressionStatement",
                  "src": "2320:44:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 16685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16679,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16658,
                            "src": "2382:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2398:1:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2382:17:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16682,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16658,
                            "src": "2403:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16683,
                            "name": "MAX_NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16641,
                            "src": "2420:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2403:35:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2382:56:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "2374:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:65:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16687,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:65:64"
                },
                {
                  "assignments": [
                    16689
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16689,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 16799,
                      "src": "2482:18:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 16688,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2482:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16697,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 16693,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22239,
                            "src": "2530:4:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$17374",
                              "typeString": "contract AbsoluteVote"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 16694,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16643,
                            "src": "2536:12:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$17374",
                              "typeString": "contract AbsoluteVote"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 16691,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "2513:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2513:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 16695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2513:36:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16690,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "2503:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 16696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2503:47:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2482:68:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 16698,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16643,
                      "src": "2560:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 16701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2592:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 16699,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16643,
                          "src": "2575:12:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "2575:16:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 16702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2575:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2560:34:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 16704,
                  "nodeType": "ExpressionStatement",
                  "src": "2560:34:64"
                },
                {
                  "assignments": [
                    16706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16706,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 16799,
                      "src": "2630:24:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16705,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "2630:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16707,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2630:24:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16708,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2664:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16710,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16607,
                      "src": "2664:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 16711,
                      "name": "_numOfChoices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16658,
                      "src": "2688:13:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2664:37:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 16713,
                  "nodeType": "ExpressionStatement",
                  "src": "2664:37:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16714,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2711:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16716,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16609,
                      "src": "2711:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 16717,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16660,
                      "src": "2733:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2711:33:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 16719,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:33:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16720,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2754:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16722,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16605,
                      "src": "2754:18:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16723,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22171,
                        "src": "2775:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 16724,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2775:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2754:31:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 16726,
                  "nodeType": "ExpressionStatement",
                  "src": "2754:31:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16727,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2795:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16729,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16601,
                      "src": "2795:23:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16733,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22171,
                                "src": "2848:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2848:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16735,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16664,
                              "src": "2860:13:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 16731,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22158,
                              "src": "2831:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 16732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2831:16:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 16736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2831:43:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 16730,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22165,
                        "src": "2821:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 16737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2821:54:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2795:80:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 16739,
                  "nodeType": "ExpressionStatement",
                  "src": "2795:80:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16740,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16706,
                        "src": "2885:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 16742,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "open",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16603,
                      "src": "2885:13:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 16743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2901:4:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2885:20:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 16745,
                  "nodeType": "ExpressionStatement",
                  "src": "2885:20:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16746,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "2915:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 16748,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 16747,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16689,
                        "src": "2925:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2915:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 16749,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16706,
                      "src": "2939:8:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal memory"
                      }
                    },
                    "src": "2915:32:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "id": 16751,
                  "nodeType": "ExpressionStatement",
                  "src": "2915:32:64"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 16759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16752,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16638,
                        "src": "2961:13:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 16755,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16753,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16706,
                          "src": "2975:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                            "typeString": "struct AbsoluteVote.Proposal memory"
                          }
                        },
                        "id": 16754,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16601,
                        "src": "2975:23:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2961:38:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3011:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 16756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3003:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 16758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3003:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2961:52:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 16784,
                  "nodeType": "IfStatement",
                  "src": "2957:292:64",
                  "trueBody": {
                    "id": 16783,
                    "nodeType": "Block",
                    "src": "3015:234:64",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 16764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16760,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16664,
                            "src": "3033:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3058:1:64",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 16761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3050:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 16763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3050:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3033:27:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16781,
                          "nodeType": "Block",
                          "src": "3152:87:64",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16774,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16638,
                                    "src": "3170:13:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 16777,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16775,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16706,
                                      "src": "3184:8:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 16776,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16601,
                                    "src": "3184:23:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3170:38:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 16778,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16664,
                                  "src": "3211:13:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3170:54:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 16780,
                              "nodeType": "ExpressionStatement",
                              "src": "3170:54:64"
                            }
                          ]
                        },
                        "id": 16782,
                        "nodeType": "IfStatement",
                        "src": "3029:210:64",
                        "trueBody": {
                          "id": 16773,
                          "nodeType": "Block",
                          "src": "3062:84:64",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16765,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16638,
                                    "src": "3080:13:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 16768,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16766,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16706,
                                      "src": "3094:8:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 16767,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16601,
                                    "src": "3094:23:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3080:38:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16769,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22171,
                                    "src": "3121:3:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 16770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3121:10:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3080:51:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 16772,
                              "nodeType": "ExpressionStatement",
                              "src": "3080:51:64"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16786,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16689,
                        "src": "3275:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 16787,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16638,
                          "src": "3287:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 16790,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16788,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16706,
                            "src": "3301:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                              "typeString": "struct AbsoluteVote.Proposal memory"
                            }
                          },
                          "id": 16789,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16601,
                          "src": "3301:23:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3287:38:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16791,
                        "name": "_numOfChoices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16658,
                        "src": "3327:13:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16792,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "3342:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 16793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3342:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16794,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16660,
                        "src": "3354:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 16785,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20468,
                      "src": "3263:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,address,bytes32)"
                      }
                    },
                    "id": 16795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3263:103:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16796,
                  "nodeType": "EmitStatement",
                  "src": "3258:108:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 16797,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16689,
                    "src": "3383:10:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 16668,
                  "id": 16798,
                  "nodeType": "Return",
                  "src": "3376:17:64"
                }
              ]
            },
            "documentation": "@dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\ngenerated by calculating keccak256 of a incremented counter.\n@param _numOfChoices number of voting choices\n@param _paramsHash defined the parameters of the voting machine used for this proposal\n@param _organization address\n@return proposal's id.",
            "id": 16800,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16665,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16658,
                  "name": "_numOfChoices",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2135:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2135:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16660,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2158:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16659,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2158:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16662,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2179:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16661,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16664,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2188:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16663,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2134:76:64"
            },
            "returnParameters": {
              "id": 16668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16667,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16800,
                  "src": "2244:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16666,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2244:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2243:9:64"
            },
            "scope": 17374,
            "src": "2118:1282:64",
            "stateMutability": "nonpayable",
            "superFunction": 20517,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16865,
              "nodeType": "Block",
              "src": "4005:416:64",
              "statements": [
                {
                  "assignments": [
                    16817
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16817,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 16865,
                      "src": "4016:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16816,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "4016:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16821,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 16818,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "4044:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 16820,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 16819,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16802,
                      "src": "4054:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4044:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4016:50:64"
                },
                {
                  "assignments": [
                    16823
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16823,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 16865,
                      "src": "4076:24:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_memory_ptr",
                        "typeString": "struct AbsoluteVote.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16822,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16594,
                        "src": "4076:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$16594_storage_ptr",
                          "typeString": "struct AbsoluteVote.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16828,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 16824,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16630,
                      "src": "4103:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                      }
                    },
                    "id": 16827,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16825,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16817,
                        "src": "4114:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 16826,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16609,
                      "src": "4114:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4103:31:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4076:58:64"
                },
                {
                  "assignments": [
                    16830
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16830,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 16865,
                      "src": "4144:13:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 16829,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4144:7:64",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16831,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4144:13:64"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 16837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 16832,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16823,
                        "src": "4171:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$16594_memory_ptr",
                          "typeString": "struct AbsoluteVote.Parameters memory"
                        }
                      },
                      "id": 16833,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voteOnBehalf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16593,
                      "src": "4171:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4202:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 16834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4194:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 16836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4194:10:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4171:33:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 16856,
                    "nodeType": "Block",
                    "src": "4307:43:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16851,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16830,
                            "src": "4321:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16852,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22171,
                              "src": "4329:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 16853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4329:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4321:18:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16855,
                        "nodeType": "ExpressionStatement",
                        "src": "4321:18:64"
                      }
                    ]
                  },
                  "id": 16857,
                  "nodeType": "IfStatement",
                  "src": "4167:183:64",
                  "trueBody": {
                    "id": 16850,
                    "nodeType": "Block",
                    "src": "4206:95:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16839,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22171,
                                  "src": "4228:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 16840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4228:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16841,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16823,
                                  "src": "4242:6:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$16594_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Parameters memory"
                                  }
                                },
                                "id": 16842,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "voteOnBehalf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16593,
                                "src": "4242:19:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4228:33:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 16838,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22174,
                            "src": "4220:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 16844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4220:42:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16845,
                        "nodeType": "ExpressionStatement",
                        "src": "4220:42:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16846,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16830,
                            "src": "4276:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 16847,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16808,
                            "src": "4284:6:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4276:14:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16849,
                        "nodeType": "ExpressionStatement",
                        "src": "4276:14:64"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16859,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16802,
                        "src": "4379:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16860,
                        "name": "voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16830,
                        "src": "4392:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16861,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16804,
                        "src": "4399:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 16862,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16806,
                        "src": "4406:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 16858,
                      "name": "internalVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17373,
                      "src": "4366:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (bytes32,address,uint256,uint256) returns (bool)"
                      }
                    },
                    "id": 16863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4366:48:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16815,
                  "id": 16864,
                  "nodeType": "Return",
                  "src": "4359:55:64"
                }
              ]
            },
            "documentation": "@dev voting function\n@param _proposalId id of the proposal\n@param _vote a value between 0 to and the proposal number of choices.\n@param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\n@param _voter voter address\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 16866,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 16811,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16802,
                    "src": "3962:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 16812,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16810,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "3954:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3954:20:64"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16802,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3836:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16801,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3836:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16804,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3865:13:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16803,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3865:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16806,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3888:15:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3888:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16808,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3913:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16807,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3913:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3826:102:64"
            },
            "returnParameters": {
              "id": 16815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16814,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16866,
                  "src": "3991:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16813,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3991:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3990:6:64"
            },
            "scope": 17374,
            "src": "3813:608:64",
            "stateMutability": "nonpayable",
            "superFunction": 20530,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16880,
              "nodeType": "Block",
              "src": "4695:60:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16875,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16868,
                        "src": "4724:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16876,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "4737:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 16877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4737:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 16874,
                      "name": "cancelVoteInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17108,
                      "src": "4705:18:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 16878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4705:43:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16879,
                  "nodeType": "ExpressionStatement",
                  "src": "4705:43:64"
                }
              ]
            },
            "documentation": "@dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes\nand delete the voter from the proposal struct\n@param _proposalId id of the proposal",
            "id": 16881,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 16871,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16868,
                    "src": "4682:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 16872,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16870,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "4674:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4674:20:64"
              }
            ],
            "name": "cancelVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16868,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16881,
                  "src": "4644:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16867,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:21:64"
            },
            "returnParameters": {
              "id": 16873,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4695:0:64"
            },
            "scope": 17374,
            "src": "4624:131:64",
            "stateMutability": "nonpayable",
            "superFunction": 20535,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16895,
              "nodeType": "Block",
              "src": "5101:45:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16892,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16883,
                        "src": "5127:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 16891,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17236,
                      "src": "5118:8:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 16893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5118:21:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16890,
                  "id": 16894,
                  "nodeType": "Return",
                  "src": "5111:28:64"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 16896,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 16886,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16883,
                    "src": "5074:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 16887,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16885,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "5066:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5066:20:64"
              }
            ],
            "name": "execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16884,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16883,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16896,
                  "src": "5036:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16882,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5036:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5035:21:64"
            },
            "returnParameters": {
              "id": 16890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16889,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16896,
                  "src": "5095:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16888,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5095:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5094:6:64"
            },
            "scope": 17374,
            "src": "5019:127:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16908,
              "nodeType": "Block",
              "src": "5465:59:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16903,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "5482:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 16905,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 16904,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16898,
                        "src": "5492:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5482:22:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 16906,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "numOfChoices",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16607,
                    "src": "5482:35:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 16902,
                  "id": 16907,
                  "nodeType": "Return",
                  "src": "5475:42:64"
                }
              ]
            },
            "documentation": "@dev getNumberOfChoices returns the number of choices possible in this proposal\nexcluding the abstain vote (0)\n@param _proposalId the ID of the proposal\n@return uint256 that contains number of choices",
            "id": 16909,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16898,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16909,
                  "src": "5413:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16897,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5413:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5412:21:64"
            },
            "returnParameters": {
              "id": 16902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16901,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16909,
                  "src": "5456:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16900,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5456:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5455:9:64"
            },
            "scope": 17374,
            "src": "5385:139:64",
            "stateMutability": "view",
            "superFunction": 20542,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16935,
              "nodeType": "Block",
              "src": "5959:122:64",
              "statements": [
                {
                  "assignments": [
                    16921
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16921,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 16935,
                      "src": "5969:18:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 16920,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16599,
                        "src": "5969:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$16599_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 16928,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 16922,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16634,
                          "src": "5990:9:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 16924,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 16923,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16911,
                          "src": "6000:11:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5990:22:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 16925,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16619,
                      "src": "5990:29:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 16927,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 16926,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16913,
                      "src": "6020:6:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5990:37:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5969:58:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16929,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16921,
                          "src": "6045:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 16930,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16596,
                        "src": "6045:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 16931,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16921,
                          "src": "6057:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 16932,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reputation",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16598,
                        "src": "6057:16:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 16933,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6044:30:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 16919,
                  "id": 16934,
                  "nodeType": "Return",
                  "src": "6037:37:64"
                }
              ]
            },
            "documentation": "@dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal\n@param _proposalId the ID of the proposal\n@param _voter the address of the voter\n@return uint256 vote - the voters vote\n       uint256 reputation - amount of reputation committed by _voter to _proposalId",
            "id": 16936,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16911,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5888:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16910,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5888:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16913,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5909:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16912,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5909:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5887:37:64"
            },
            "returnParameters": {
              "id": 16919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16916,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5947:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16915,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5947:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16918,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16936,
                  "src": "5953:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16917,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5953:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5946:12:64"
            },
            "scope": 17374,
            "src": "5870:211:64",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16952,
              "nodeType": "Block",
              "src": "6430:61:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 16945,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16634,
                          "src": "6447:9:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 16947,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 16946,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16938,
                          "src": "6457:11:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6447:22:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 16948,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16615,
                      "src": "6447:28:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 16950,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 16949,
                      "name": "_choice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16940,
                      "src": "6476:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6447:37:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 16944,
                  "id": 16951,
                  "nodeType": "Return",
                  "src": "6440:44:64"
                }
              ]
            },
            "documentation": "@dev voteStatus returns the reputation voted for a proposal for a specific voting choice.\n@param _proposalId the ID of the proposal\n@param _choice the index in the\n@return voted reputation for the given choice",
            "id": 16953,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16938,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16953,
                  "src": "6361:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16937,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6361:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16940,
                  "name": "_choice",
                  "nodeType": "VariableDeclaration",
                  "scope": 16953,
                  "src": "6382:15:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16939,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6382:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6360:38:64"
            },
            "returnParameters": {
              "id": 16944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16943,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16953,
                  "src": "6421:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6421:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6420:9:64"
            },
            "scope": 17374,
            "src": "6341:150:64",
            "stateMutability": "view",
            "superFunction": 20558,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16965,
              "nodeType": "Block",
              "src": "6721:52:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 16960,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "6739:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 16962,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 16961,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16955,
                        "src": "6749:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6739:22:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 16963,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "open",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16603,
                    "src": "6739:27:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16959,
                  "id": 16964,
                  "nodeType": "Return",
                  "src": "6731:35:64"
                }
              ]
            },
            "documentation": "@dev isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 16966,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16955,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 16966,
                  "src": "6672:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16954,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6672:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6671:21:64"
            },
            "returnParameters": {
              "id": 16959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16958,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16966,
                  "src": "6715:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16957,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6715:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6714:6:64"
            },
            "scope": 17374,
            "src": "6653:120:64",
            "stateMutability": "view",
            "superFunction": 20549,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16973,
              "nodeType": "Block",
              "src": "6958:28:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 16971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6975:4:64",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 16970,
                  "id": 16972,
                  "nodeType": "Return",
                  "src": "6968:11:64"
                }
              ]
            },
            "documentation": "@dev isAbstainAllow returns if the voting machine allow abstain (0)\n@return bool true or false",
            "id": 16974,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAbstainAllow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16967,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6927:2:64"
            },
            "returnParameters": {
              "id": 16970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16969,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 16974,
                  "src": "6952:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16968,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6952:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6951:6:64"
            },
            "scope": 17374,
            "src": "6904:82:64",
            "stateMutability": "pure",
            "superFunction": 20563,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16985,
              "nodeType": "Block",
              "src": "7282:47:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 16981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7300:1:64",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 16982,
                        "name": "MAX_NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16641,
                        "src": "7303:18:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 16983,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7299:23:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$",
                      "typeString": "tuple(int_const 0,uint256)"
                    }
                  },
                  "functionReturnParameters": 16980,
                  "id": 16984,
                  "nodeType": "Return",
                  "src": "7292:30:64"
                }
              ]
            },
            "documentation": "@dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\n@return min - minimum number of choices\nmax - maximum number of choices",
            "id": 16986,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAllowedRangeOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16975,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7231:2:64"
            },
            "returnParameters": {
              "id": 16980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16977,
                  "name": "min",
                  "nodeType": "VariableDeclaration",
                  "scope": 16986,
                  "src": "7256:11:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7256:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16979,
                  "name": "max",
                  "nodeType": "VariableDeclaration",
                  "scope": 16986,
                  "src": "7269:11:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16978,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7269:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7255:26:64"
            },
            "scope": 17374,
            "src": "7198:131:64",
            "stateMutability": "pure",
            "superFunction": 20570,
            "visibility": "external"
          },
          {
            "body": {
              "id": 17023,
              "nodeType": "Block",
              "src": "7521:304:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16996,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16988,
                            "src": "7539:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 16997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7551:3:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "7539:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16999,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16988,
                            "src": "7558:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7569:1:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7558:12:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7539:31:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16995,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "7531:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 17003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7531:40:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17004,
                  "nodeType": "ExpressionStatement",
                  "src": "7531:40:64"
                },
                {
                  "assignments": [
                    17006
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17006,
                      "name": "hashedParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 17023,
                      "src": "7581:24:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 17005,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7581:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17011,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17008,
                        "name": "_precReq",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16988,
                        "src": "7626:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17009,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16990,
                        "src": "7636:13:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17007,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17042,
                      "src": "7608:17:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256,address) pure returns (bytes32)"
                      }
                    },
                    "id": 17010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7608:42:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7581:69:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17012,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16630,
                        "src": "7660:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 17014,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17013,
                        "name": "hashedParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17006,
                        "src": "7671:16:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7660:28:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 17016,
                          "name": "_precReq",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16988,
                          "src": "7725:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17017,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16990,
                          "src": "7761:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 17015,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16594,
                        "src": "7691:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$16594_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Parameters storage pointer)"
                        }
                      },
                      "id": 17018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "precReq",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "7691:94:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_memory",
                        "typeString": "struct AbsoluteVote.Parameters memory"
                      }
                    },
                    "src": "7660:125:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "id": 17020,
                  "nodeType": "ExpressionStatement",
                  "src": "7660:125:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17021,
                    "name": "hashedParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17006,
                    "src": "7802:16:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 16994,
                  "id": 17022,
                  "nodeType": "Return",
                  "src": "7795:23:64"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value",
            "id": 17024,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16988,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 17024,
                  "src": "7456:16:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7456:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16990,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 17024,
                  "src": "7474:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7474:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7455:41:64"
            },
            "returnParameters": {
              "id": 16994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16993,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17024,
                  "src": "7512:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16992,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7512:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7511:9:64"
            },
            "scope": 17374,
            "src": "7433:392:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17041,
              "nodeType": "Block",
              "src": "8010:76:64",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 17036,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17026,
                            "src": "8054:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 17037,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17028,
                            "src": "8064:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 17034,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "8037:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8037:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 17038,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8037:41:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17033,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "8027:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 17039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8027:52:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17032,
                  "id": 17040,
                  "nodeType": "Return",
                  "src": "8020:59:64"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 17042,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17029,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17026,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "7940:16:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17025,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7940:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17028,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "7958:21:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17027,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7958:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7939:41:64"
            },
            "returnParameters": {
              "id": 17032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17031,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "8001:7:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17030,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8001:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8000:9:64"
            },
            "scope": 17374,
            "src": "7913:173:64",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17107,
              "nodeType": "Block",
              "src": "8166:413:64",
              "statements": [
                {
                  "assignments": [
                    17050
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17050,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17107,
                      "src": "8176:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17049,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "8176:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17054,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17051,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "8204:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17053,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17052,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17044,
                      "src": "8214:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8204:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8176:50:64"
                },
                {
                  "assignments": [
                    17056
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17056,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 17107,
                      "src": "8236:18:64",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17055,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16599,
                        "src": "8236:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$16599_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17061,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17057,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17050,
                        "src": "8257:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17058,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16619,
                      "src": "8257:15:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 17060,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17059,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17046,
                      "src": "8273:6:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8257:23:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8236:44:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17062,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17050,
                          "src": "8290:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17066,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16615,
                        "src": "8290:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 17067,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17064,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17056,
                          "src": "8305:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 17065,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16596,
                        "src": "8305:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8290:26:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17075,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17056,
                            "src": "8352:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 17076,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16598,
                          "src": "8352:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17068,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17050,
                                  "src": "8320:8:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                  }
                                },
                                "id": 17069,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16615,
                                "src": "8320:14:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 17072,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17070,
                                  "name": "voter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17056,
                                  "src": "8335:5:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Voter memory"
                                  }
                                },
                                "id": 17071,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16596,
                                "src": "8335:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8320:26:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17073,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8319:28:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21263,
                        "src": "8319:32:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8319:50:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8290:79:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17079,
                  "nodeType": "ExpressionStatement",
                  "src": "8290:79:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17080,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17050,
                        "src": "8379:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17082,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16611,
                      "src": "8379:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17087,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17056,
                            "src": "8427:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$16599_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 17088,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16598,
                          "src": "8427:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17083,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17050,
                                "src": "8402:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 17084,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16611,
                              "src": "8402:19:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17085,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8401:21:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21263,
                        "src": "8401:25:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17089,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8401:43:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8379:65:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17091,
                  "nodeType": "ExpressionStatement",
                  "src": "8379:65:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8454:30:64",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17092,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17050,
                          "src": "8461:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17093,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16619,
                        "src": "8461:15:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 17095,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17094,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17046,
                        "src": "8477:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8461:23:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17097,
                  "nodeType": "ExpressionStatement",
                  "src": "8454:30:64"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17099,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17044,
                        "src": "8512:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17100,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16638,
                          "src": "8525:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 17103,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17101,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17050,
                            "src": "8539:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17102,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16601,
                          "src": "8539:23:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8525:38:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17104,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17046,
                        "src": "8565:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17098,
                      "name": "CancelVoting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20504,
                      "src": "8499:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address,address)"
                      }
                    },
                    "id": 17105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8499:73:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17106,
                  "nodeType": "EmitStatement",
                  "src": "8494:78:64"
                }
              ]
            },
            "documentation": null,
            "id": 17108,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancelVoteInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17044,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17108,
                  "src": "8120:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17043,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8120:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17046,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 17108,
                  "src": "8141:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17045,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8141:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8119:37:64"
            },
            "returnParameters": {
              "id": 17048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8166:0:64"
            },
            "scope": 17374,
            "src": "8092:487:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17143,
              "nodeType": "Block",
              "src": "8639:225:64",
              "statements": [
                {
                  "assignments": [
                    17114
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17114,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17143,
                      "src": "8649:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17113,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "8649:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17118,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17115,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "8677:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17117,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17116,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17110,
                      "src": "8687:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8677:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8649:50:64"
                },
                {
                  "body": {
                    "id": 17136,
                    "nodeType": "Block",
                    "src": "8768:51:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8782:26:64",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17130,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17114,
                                "src": "8789:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 17131,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16615,
                              "src": "8789:14:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 17133,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17132,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17120,
                              "src": "8804:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8789:19:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17135,
                        "nodeType": "ExpressionStatement",
                        "src": "8782:26:64"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17123,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17120,
                      "src": "8731:3:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17124,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17114,
                        "src": "8738:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17125,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16607,
                      "src": "8738:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8731:28:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17137,
                  "initializationExpression": {
                    "assignments": [
                      17120
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17120,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 17137,
                        "src": "8714:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8714:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 17122,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8728:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8714:15:64"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 17128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8761:5:64",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 17127,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17120,
                        "src": "8761:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17129,
                    "nodeType": "ExpressionStatement",
                    "src": "8761:5:64"
                  },
                  "nodeType": "ForStatement",
                  "src": "8709:110:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8828:29:64",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17138,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16634,
                        "src": "8835:9:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 17140,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17139,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17110,
                        "src": "8845:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8835:22:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17142,
                  "nodeType": "ExpressionStatement",
                  "src": "8828:29:64"
                }
              ]
            },
            "documentation": null,
            "id": 17144,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deleteProposal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17110,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17144,
                  "src": "8609:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8609:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8608:21:64"
            },
            "returnParameters": {
              "id": 17112,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8639:0:64"
            },
            "scope": 17374,
            "src": "8585:279:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17235,
              "nodeType": "Block",
              "src": "9211:826:64",
              "statements": [
                {
                  "assignments": [
                    17155
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17155,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17235,
                      "src": "9221:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17154,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "9221:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17159,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17156,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "9249:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17158,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17157,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17146,
                      "src": "9259:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9249:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9221:50:64"
                },
                {
                  "assignments": [
                    17161
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17161,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 17235,
                      "src": "9281:23:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17160,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9281:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17169,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17167,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17146,
                        "src": "9392:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17163,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17155,
                              "src": "9347:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 17164,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16605,
                            "src": "9347:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17162,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "9315:31:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 17165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9315:51:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 17166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20628,
                      "src": "9315:76:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 17168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9315:89:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9281:123:64"
                },
                {
                  "assignments": [
                    17171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17171,
                      "name": "precReq",
                      "nodeType": "VariableDeclaration",
                      "scope": 17235,
                      "src": "9414:15:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9414:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17177,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17172,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16630,
                        "src": "9432:10:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$16594_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 17175,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17173,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17155,
                          "src": "9443:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17174,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "paramsHash",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16609,
                        "src": "9443:19:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9432:31:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$16594_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "id": 17176,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "precReq",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16591,
                    "src": "9432:39:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9414:57:64"
                },
                {
                  "body": {
                    "id": 17231,
                    "nodeType": "Block",
                    "src": "9585:424:64",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17189,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17155,
                                "src": "9603:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 17190,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16615,
                              "src": "9603:14:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 17192,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17191,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17179,
                              "src": "9618:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9603:19:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17193,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17161,
                                    "src": "9626:15:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 17194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9642:3:64",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  },
                                  "src": "9626:19:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 17196,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9625:21:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 17197,
                              "name": "precReq",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17171,
                              "src": "9647:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9625:29:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9603:51:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17230,
                        "nodeType": "IfStatement",
                        "src": "9599:400:64",
                        "trueBody": {
                          "id": 17229,
                          "nodeType": "Block",
                          "src": "9656:343:64",
                          "statements": [
                            {
                              "assignments": [
                                17201
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17201,
                                  "name": "tmpProposal",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17229,
                                  "src": "9674:27:64",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 17200,
                                    "name": "Proposal",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 16620,
                                    "src": "9674:8:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                      "typeString": "struct AbsoluteVote.Proposal"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17203,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 17202,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17155,
                                "src": "9704:8:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9674:38:64"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17205,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17146,
                                    "src": "9745:11:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 17204,
                                  "name": "deleteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17144,
                                  "src": "9730:14:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32)"
                                  }
                                },
                                "id": 17206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9730:27:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17207,
                              "nodeType": "ExpressionStatement",
                              "src": "9730:27:64"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17209,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17146,
                                    "src": "9796:11:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 17210,
                                      "name": "organizations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16638,
                                      "src": "9809:13:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                      }
                                    },
                                    "id": 17213,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17211,
                                        "name": "tmpProposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17201,
                                        "src": "9823:11:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                          "typeString": "struct AbsoluteVote.Proposal memory"
                                        }
                                      },
                                      "id": 17212,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16601,
                                      "src": "9823:26:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9809:41:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 17214,
                                    "name": "cnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17179,
                                    "src": "9852:3:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 17215,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17161,
                                    "src": "9857:15:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17208,
                                  "name": "ExecuteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20478,
                                  "src": "9780:15:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,address,uint256,uint256)"
                                  }
                                },
                                "id": 17216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9780:93:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17217,
                              "nodeType": "EmitStatement",
                              "src": "9775:98:64"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17223,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17146,
                                    "src": "9962:11:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 17225,
                                        "name": "cnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17179,
                                        "src": "9979:3:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 17224,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9975:3:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": "int"
                                    },
                                    "id": 17226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9975:8:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17219,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17201,
                                          "src": "9923:11:64",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$16620_memory_ptr",
                                            "typeString": "struct AbsoluteVote.Proposal memory"
                                          }
                                        },
                                        "id": 17220,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "callbacks",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 16605,
                                        "src": "9923:21:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 17218,
                                      "name": "ProposalExecuteInterface",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20583,
                                      "src": "9898:24:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$20583_$",
                                        "typeString": "type(contract ProposalExecuteInterface)"
                                      }
                                    },
                                    "id": 17221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9898:47:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProposalExecuteInterface_$20583",
                                      "typeString": "contract ProposalExecuteInterface"
                                    }
                                  },
                                  "id": 17222,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "executeProposal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20582,
                                  "src": "9898:63:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                                    "typeString": "function (bytes32,int256) external returns (bool)"
                                  }
                                },
                                "id": 17227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9898:86:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 17153,
                              "id": 17228,
                              "nodeType": "Return",
                              "src": "9891:93:64"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17182,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17179,
                      "src": "9548:3:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17183,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17155,
                        "src": "9555:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17184,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16607,
                      "src": "9555:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9548:28:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17232,
                  "initializationExpression": {
                    "assignments": [
                      17179
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17179,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 17232,
                        "src": "9531:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9531:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 17181,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9545:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9531:15:64"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 17187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9578:5:64",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 17186,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17179,
                        "src": "9578:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17188,
                    "nodeType": "ExpressionStatement",
                    "src": "9578:5:64"
                  },
                  "nodeType": "ForStatement",
                  "src": "9526:483:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 17233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10025:5:64",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 17153,
                  "id": 17234,
                  "nodeType": "Return",
                  "src": "10018:12:64"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 17236,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17149,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17146,
                    "src": "9184:11:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17150,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17148,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 16656,
                  "src": "9176:7:64",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9176:20:64"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17146,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17236,
                  "src": "9146:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17145,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9146:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9145:21:64"
            },
            "returnParameters": {
              "id": 17153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17152,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17236,
                  "src": "9205:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17151,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9205:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9204:6:64"
            },
            "scope": 17374,
            "src": "9128:909:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17372,
              "nodeType": "Block",
              "src": "10665:1227:64",
              "statements": [
                {
                  "assignments": [
                    17250
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17250,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 17372,
                      "src": "10675:25:64",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17249,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 16620,
                        "src": "10675:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17254,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17251,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16634,
                      "src": "10703:9:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$16620_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 17253,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17252,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17238,
                      "src": "10713:11:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10703:22:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$16620_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10675:50:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17256,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17242,
                          "src": "10772:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17257,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "10781:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17258,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfChoices",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16607,
                          "src": "10781:21:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10772:30:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "10764:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 17260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:39:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17261,
                  "nodeType": "ExpressionStatement",
                  "src": "10764:39:64"
                },
                {
                  "assignments": [
                    17263
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17263,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 17372,
                      "src": "10859:18:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10859:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17272,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17269,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17240,
                        "src": "10945:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17270,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "10953:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17265,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17250,
                              "src": "10912:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 17266,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16605,
                            "src": "10912:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 17264,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "10880:31:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 17267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10880:51:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 17268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20637,
                      "src": "10880:64:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 17271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10880:85:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10859:106:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17274,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17263,
                          "src": "10983:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 17275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10996:1:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10983:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 17277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10999:29:64",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        },
                        "value": "_voter must have reputation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        }
                      ],
                      "id": 17273,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10975:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10975:54:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17279,
                  "nodeType": "ExpressionStatement",
                  "src": "10975:54:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17281,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17263,
                          "src": "11047:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 17282,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17244,
                          "src": "11061:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11047:18:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17280,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "11039:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 17284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11039:27:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17285,
                  "nodeType": "ExpressionStatement",
                  "src": "11039:27:64"
                },
                {
                  "assignments": [
                    17287
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17287,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 17372,
                      "src": "11076:11:64",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17286,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11076:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17289,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 17288,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17244,
                    "src": "11090:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11076:18:64"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 17290,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17287,
                      "src": "11108:3:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17291,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11115:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11108:8:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17298,
                  "nodeType": "IfStatement",
                  "src": "11104:55:64",
                  "trueBody": {
                    "id": 17297,
                    "nodeType": "Block",
                    "src": "11118:41:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17293,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17287,
                            "src": "11132:3:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17294,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17263,
                            "src": "11138:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11132:16:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17296,
                        "nodeType": "ExpressionStatement",
                        "src": "11132:16:64"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17299,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "11239:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17300,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16619,
                          "src": "11239:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                            "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                          }
                        },
                        "id": 17302,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17301,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17240,
                          "src": "11255:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11239:23:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$16599_storage",
                          "typeString": "struct AbsoluteVote.Voter storage ref"
                        }
                      },
                      "id": 17303,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16598,
                      "src": "11239:34:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 17304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11277:1:64",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11239:39:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17312,
                  "nodeType": "IfStatement",
                  "src": "11235:109:64",
                  "trueBody": {
                    "id": 17311,
                    "nodeType": "Block",
                    "src": "11280:64:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17307,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17238,
                              "src": "11313:11:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17308,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17240,
                              "src": "11326:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17306,
                            "name": "cancelVoteInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17108,
                            "src": "11294:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 17309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11294:39:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17310,
                        "nodeType": "ExpressionStatement",
                        "src": "11294:39:64"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17313,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17250,
                          "src": "11383:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17316,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16615,
                        "src": "11383:14:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 17317,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17315,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17242,
                        "src": "11398:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11383:21:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17320,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17250,
                              "src": "11415:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 17321,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16615,
                            "src": "11415:14:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 17323,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 17322,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17242,
                            "src": "11430:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11415:21:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 17318,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17287,
                          "src": "11407:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "11407:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11407:30:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11383:54:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17326,
                  "nodeType": "ExpressionStatement",
                  "src": "11383:54:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17327,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17250,
                        "src": "11447:8:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 17329,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16611,
                      "src": "11447:19:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17332,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "11477:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17333,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalVotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16611,
                          "src": "11477:19:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 17330,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17287,
                          "src": "11469:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "11469:7:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 17334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11469:28:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11447:50:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17336,
                  "nodeType": "ExpressionStatement",
                  "src": "11447:50:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17337,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17250,
                          "src": "11507:8:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 17340,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16619,
                        "src": "11507:15:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$16599_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 17341,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 17339,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17240,
                        "src": "11523:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11507:23:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 17343,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17287,
                          "src": "11565:3:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 17344,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17242,
                          "src": "11588:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 17342,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16599,
                        "src": "11533:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$16599_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Voter storage pointer)"
                        }
                      },
                      "id": 17345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "11533:71:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$16599_memory",
                        "typeString": "struct AbsoluteVote.Voter memory"
                      }
                    },
                    "src": "11507:97:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$16599_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "id": 17347,
                  "nodeType": "ExpressionStatement",
                  "src": "11507:97:64"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17349,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "11650:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17350,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16638,
                          "src": "11663:13:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 17353,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17351,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17250,
                            "src": "11677:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$16620_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 17352,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16601,
                          "src": "11677:23:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11663:38:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17354,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17240,
                        "src": "11703:6:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17355,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17242,
                        "src": "11711:5:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17356,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17287,
                        "src": "11718:3:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17348,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20490,
                      "src": "11637:12:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 17357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11637:85:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17358,
                  "nodeType": "EmitStatement",
                  "src": "11632:90:64"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17360,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "11752:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 17364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 17361,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17240,
                              "src": "11766:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17362,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22171,
                                "src": "11776:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11776:10:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "11766:20:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17365,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "11765:22:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 17359,
                      "name": "AVVoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16626,
                      "src": "11737:14:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$",
                        "typeString": "function (bytes32,bool)"
                      }
                    },
                    "id": 17366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11737:51:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17367,
                  "nodeType": "EmitStatement",
                  "src": "11732:56:64"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17369,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "11873:11:64",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17368,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17236,
                      "src": "11864:8:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 17370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11864:21:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17248,
                  "id": 17371,
                  "nodeType": "Return",
                  "src": "11857:28:64"
                }
              ]
            },
            "documentation": "@dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n@param _proposalId id of the proposal\n@param _voter used in case the vote is cast for someone else\n@param _vote a value between 0 to and the proposal's number of choices.\n@return true in case of proposal execution otherwise false\nthrows if proposal is not open or if it has been executed\nNB: executes the proposal if a decision has been reached",
            "id": 17373,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17238,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10576:19:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17237,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10576:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17240,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10597:14:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17239,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10597:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17242,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10613:13:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17241,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10613:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17244,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10628:12:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17243,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10628:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:66:64"
            },
            "returnParameters": {
              "id": 17248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17247,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17373,
                  "src": "10659:4:64",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17246,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10659:4:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10658:6:64"
            },
            "scope": 17374,
            "src": "10554:1338:64",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 17375,
        "src": "237:11657:64"
      }
    ],
    "src": "0:11895:64"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.2",
  "updatedAt": "2021-08-23T07:33:52.570Z",
  "devdoc": {
    "methods": {
      "cancelVote(bytes32)": {
        "details": "Cancel the vote of the msg.sender: subtract the reputation amount from the votes and delete the voter from the proposal struct",
        "params": {
          "_proposalId": "id of the proposal"
        }
      },
      "execute(bytes32)": {
        "details": "execute check if the proposal has been decided, and if so, execute the proposal",
        "params": {
          "_proposalId": "the id of the proposal"
        },
        "return": "bool true - the proposal has been executed             false - otherwise."
      },
      "getAllowedRangeOfChoices()": {
        "details": "getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.",
        "return": "min - minimum number of choices max - maximum number of choices"
      },
      "getNumberOfChoices(bytes32)": {
        "details": "getNumberOfChoices returns the number of choices possible in this proposal excluding the abstain vote (0)",
        "params": {
          "_proposalId": "the ID of the proposal"
        },
        "return": "uint256 that contains number of choices"
      },
      "getParametersHash(uint256,address)": {
        "details": "hashParameters returns a hash of the given parameters"
      },
      "isAbstainAllow()": {
        "details": "isAbstainAllow returns if the voting machine allow abstain (0)",
        "return": "bool true or false"
      },
      "isVotable(bytes32)": {
        "details": "isVotable check if the proposal is votable",
        "params": {
          "_proposalId": "the ID of the proposal"
        },
        "return": "bool true or false"
      },
      "propose(uint256,bytes32,address,address)": {
        "details": "register a new proposal with the given parameters. Every proposal has a unique ID which is being generated by calculating keccak256 of a incremented counter.",
        "params": {
          "_numOfChoices": "number of voting choices",
          "_organization": "address",
          "_paramsHash": "defined the parameters of the voting machine used for this proposal"
        },
        "return": "proposal's id."
      },
      "setParameters(uint256,address)": {
        "details": "hash the parameters, save them if necessary, and return the hash value"
      },
      "vote(bytes32,uint256,uint256,address)": {
        "details": "voting function",
        "params": {
          "_amount": "the reputation amount to vote with . if _amount == 0 it will use all voter reputation.",
          "_proposalId": "id of the proposal",
          "_vote": "a value between 0 to and the proposal number of choices.",
          "_voter": "voter address"
        },
        "return": "bool true - the proposal has been executed             false - otherwise."
      },
      "voteInfo(bytes32,address)": {
        "details": "voteInfo returns the vote and the amount of reputation of the user committed to this proposal",
        "params": {
          "_proposalId": "the ID of the proposal",
          "_voter": "the address of the voter"
        },
        "return": "uint256 vote - the voters vote       uint256 reputation - amount of reputation committed by _voter to _proposalId"
      },
      "voteStatus(bytes32,uint256)": {
        "details": "voteStatus returns the reputation voted for a proposal for a specific voting choice.",
        "params": {
          "_choice": "the index in the",
          "_proposalId": "the ID of the proposal"
        },
        "return": "voted reputation for the given choice"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}